-
Notifications
You must be signed in to change notification settings - Fork 505
Expand file tree
/
Copy pathSubscriptionCommand`2.cs
More file actions
39 lines (32 loc) · 1.35 KB
/
SubscriptionCommand`2.cs
File metadata and controls
39 lines (32 loc) · 1.35 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
// Copyright (c) Microsoft Corporation.
// Licensed under the MIT License.
using System.Diagnostics.CodeAnalysis;
using Azure.Mcp.Core.Options;
using Azure.Mcp.Core.Services.Azure.Subscription;
using Microsoft.Mcp.Core.Commands;
namespace Azure.Mcp.Core.Commands.Subscription;
public abstract class SubscriptionCommand<
[DynamicallyAccessedMembers(TrimAnnotations.CommandAnnotations)] TOptions, TResult>
: AuthenticatedCommand<TOptions, TResult> where TOptions : class, ISubscriptionOption
{
private readonly ISubscriptionResolver _subscriptionResolver;
protected SubscriptionCommand(ISubscriptionResolver subscriptionResolver)
{
_subscriptionResolver = subscriptionResolver;
}
public override void ValidateOptions(TOptions options, ValidationResult validationResult)
{
base.ValidateOptions(options, validationResult);
if (string.IsNullOrEmpty(options.Subscription))
{
validationResult.Errors.Add("Missing Required options: --subscription");
}
}
public override TOptions BindOptions(ParseResult parseResult)
{
var options = base.BindOptions(parseResult);
// Always post-process subscription via resolver (env var / CLI profile fallback)
options.Subscription = _subscriptionResolver.ResolveSubscription(options.Subscription);
return options;
}
}