/// <summary> /// Initializes a new instance of the Argument class. /// </summary> /// <param name="name">The name of the argument.</param> /// <param name="parse">A custom argument parser.</param> /// <param name="isDefault"><see langword="true"/> to use the <paramref name="parse"/> result as default value.</param> /// <param name="description">The description of the argument, shown in help.</param> /// <exception cref="ArgumentNullException">Thrown when <paramref name="parse"/> is null.</exception> public Argument( string?name, ParseArgument <T> parse, bool isDefault = false, string?description = null) : this(name, description) { if (parse is null) { throw new ArgumentNullException(nameof(parse)); } if (isDefault) { SetDefaultValueFactory(argumentResult => parse(argumentResult)); } ConvertArguments = (ArgumentResult argumentResult, out object?value) => { var result = parse(argumentResult); if (string.IsNullOrEmpty(argumentResult.ErrorMessage)) { value = result; return(true); } else { value = default(T) !; return(false); } }; _hasCustomParser = true; }
public static ArgumentBuilder <T> ParseWith <T>(this ArgumentBuilder <T> builder, ParseArgument <T> parser, bool useAsDefaultFactory = false) { (builder ?? throw Exceptions.BuildArgumentNull(nameof(builder))) .Parser = parser; builder.UseParserAsDefaultFactory = useAsDefaultFactory; return(builder); }
public Argument(ParseArgument <T> parse, bool isDefault = false) : this() { if (parse == null) { throw new ArgumentNullException(nameof(parse)); } if (isDefault) { SetDefaultValueFactory(argumentResult => parse(argumentResult)); } ConvertArguments = (ArgumentResult argumentResult, out object value) => { var result = parse(argumentResult); if (string.IsNullOrEmpty(argumentResult.ErrorMessage)) { value = result; return(true); } else { value = default(T); return(false); } }; }
public Option( string alias, ParseArgument <T> parseArgument, bool isDefault = false, string?description = null ) : base( new[] { alias }, description,
public Option( string[] aliases, ParseArgument <T> parseArgument, bool isDefault = false, string?description = null) : base(aliases, description) { if (parseArgument is null) { throw new ArgumentNullException(nameof(parseArgument)); } Argument = new Argument <T>(parseArgument, isDefault); }
/// <summary> /// Initializes a new instance of the Argument class. /// </summary> /// <param name="parse">A custom argument parser.</param> /// <param name="isDefault"><see langword="true"/> to use the <paramref name="parse"/> result as default value.</param> public Argument(ParseArgument <T> parse, bool isDefault = false) : this(null, parse, isDefault) { }
/// <inheritdoc/> public Option( string name, ParseArgument <T> parseArgument, bool isDefault = false, string?description = null) : base(name, description,
/// <summary> /// Creates a new phone number /// </summary> public PhoneNumber(object DataCell, ParseArgument ParseAs, string DefaultUSAreaCode = null) { if (!StringFunctions.IsNullOrWhiteSpace(DefaultUSAreaCode)) this.DefaultUSAreaCode = DefaultUSAreaCode; _strSource = ""; _intCountryCode = -1; _intAreaCode = -1; _intNumber = -1; _intExtension = null; _strCountryName = ""; _strAreaDescription = ""; if(DataCell != null) { if(!Convert.IsDBNull(DataCell)) { _strSource = DataCell.ToString(); if(StringFunctions.IsNumeric(_strSource)) ParseNumber(Convert.ToInt64(_strSource),ParseAs); else ParseNumber(_strSource,ParseAs); } } }
/// <summary> /// Creates a new phone number /// </summary> public PhoneNumber(string Number, ParseArgument ParseAs, string DefaultUSAreaCode = null) { if (!StringFunctions.IsNullOrWhiteSpace(DefaultUSAreaCode)) this.DefaultUSAreaCode = DefaultUSAreaCode; _strSource = Number; _intCountryCode = -1; _intAreaCode = -1; _intNumber = -1; _intExtension = null; _strCountryName = ""; _strAreaDescription = ""; if(StringFunctions.IsNumeric(_strSource)) ParseNumber(Convert.ToInt64(_strSource),ParseAs); else if (_strSource != null) ParseNumber(_strSource,ParseAs); }
/// <summary> /// Creates a new phone number /// </summary> public PhoneNumber(Int64 Number, ParseArgument ParseAs, string DefaultUSAreaCode = null) { if (!StringFunctions.IsNullOrWhiteSpace(DefaultUSAreaCode)) this.DefaultUSAreaCode = DefaultUSAreaCode; _strSource = Number.ToString(); _intCountryCode = -1; _intAreaCode = -1; _intNumber = -1; _intExtension = null; _strCountryName = ""; _strAreaDescription = ""; ParseNumber(Number,ParseAs); }
/// <summary> /// Creates a new phone number /// </summary> public PhoneNumber(string Number, string Extension, ParseArgument ParseAs, string DefaultUSAreaCode = null) { if (!StringFunctions.IsNullOrWhiteSpace(DefaultUSAreaCode)) this.DefaultUSAreaCode = DefaultUSAreaCode; _strSource = Number.ToString(); _intCountryCode = -1; _intAreaCode = -1; _intNumber = -1; _intExtension = null; _strCountryName = ""; _strAreaDescription = ""; if(Number == null) _intNumber = -1; else if(Number == "") _intNumber = -1; else { if(StringFunctions.IsNumeric(Number)) ParseNumber(Convert.ToInt64(Number),ParseAs); else ParseNumber(Number,ParseAs); } int? intExtension; if (Extension == null) intExtension = null; else if (Extension == "") intExtension = null; else intExtension = Convert.ToInt32(StringFunctions.ForceNumeric(Extension)); if (intExtension.HasValue) _intExtension = intExtension; }
private void ParseNumber(string Number, ParseArgument ParseAs) { _blnFlaggedInvalid = false; _enuParseAs = ParseAs; switch(ParseAs) { case ParseArgument.NANP: if (StringFunctions.ForceInteger(Number).StartsWith("0")) _blnFlaggedInvalid = true; //NANP numbers and dial strings don't start with zero ParseNANPNumber(CleanNumber(Number)); break; default: ParseNumber(CleanNumber(Number)); break; } }
private void ParseNumber(Int64 Number, ParseArgument ParseAs) { _blnFlaggedInvalid = false; _enuParseAs = ParseAs; switch(ParseAs) { case ParseArgument.NANP: ParseNANPNumber(Number); break; default: ParseNumber(Number); break; } }
public ForwardedOption(string alias, ParseArgument <T> parseArgument, string description = null) : base(alias, parseArgument, description: description) { }
/// <summary> /// Build the root command. /// </summary> /// <returns>A configured root command.</returns> public Command Build() { var command = new RootCommand(); // Add sub-commands foreach (var builder in _builders) { _logger.LogDebug(TraceMessages.AddingSubCommand, builder.GetType().Name); command.AddCommand(builder.Build()); } // Add root level options (available to all sub-commands) var verboseAliases = new string[] { OptionsResources.VerboseOptionShort, OptionsResources.VerboseOptionLong }; var verboseOption = new Option <bool>(verboseAliases, OptionsResources.VerboseOptionDescription); command.AddGlobalOption(verboseOption); var verboseLevelOption = new Option <char>(OptionsResources.VerboseLevelOptionLong, () => '-', OptionsResources.VerboseLevelOptionDescription); command.AddGlobalOption(verboseLevelOption); var noAbortOption = new Option <bool>(OptionsResources.NoAbortOptionLong, OptionsResources.NoAbortOptionDescription); command.AddGlobalOption(noAbortOption); var abortStageOption = new Option <Stages[]>(OptionsResources.AbortStageOptionLong, OptionsResources.AbortStageOptionDescription); command.AddGlobalOption(abortStageOption); var findPathAliases = new string[] { OptionsResources.FindPathsOptionShort, OptionsResources.FindPathsOptionLong }; var findPathOption = new Option <DirectoryInfo[]>(findPathAliases, OptionsResources.FindPathsOptionDescription); command.AddGlobalOption(findPathOption); var findPatternAliases = new string[] { OptionsResources.FindPatternOptionShort, OptionsResources.FindPatternOptionLong }; var findPatternOption = new Option <string>(findPatternAliases, OptionsResources.FindPatternOptionDescription); command.AddGlobalOption(findPatternOption); var parseFunc = new ParseArgument <Dictionary <string, string> >(argResult => argResult.Tokens.Select(t => t.Value.Split('=')).ToDictionary(v => v[0], v => v.Length > 1 ? v[1] : "")); var argumentAliases = new string[] { OptionsResources.ArgumentsOptionShort, OptionsResources.ArgumentsOptionLong }; var argumentOption = new Option <Dictionary <string, string> >(argumentAliases, parseFunc, description: OptionsResources.ArgumentsOptionDescription); command.AddGlobalOption(argumentOption); var argumentDelimiterOption = new Option <string>(OptionsResources.ArgumentDelimiterOptionLong, OptionsResources.ArgumentDelimiterOptionDescription); command.AddGlobalOption(argumentDelimiterOption); var workingDirAliases = new string[] { OptionsResources.WorkingPathOptionShort, OptionsResources.WorkingPathOptionLong }; var workingDirOption = new Option <DirectoryInfo>(workingDirAliases, OptionsResources.WorkingPathOptionDescription); command.AddGlobalOption(workingDirOption); var stateDirAliases = new string[] { OptionsResources.StatePathOptionShort, OptionsResources.StatePathOptionLong }; var stateDirOption = new Option <string>(stateDirAliases, OptionsResources.StatePathOptionDescription); command.AddGlobalOption(stateDirOption); var saveStateOption = new Option <bool>(OptionsResources.SaveStageRunnerStateOptionLong, OptionsResources.SaveStageRunnerStateOptionDescription); command.AddGlobalOption(saveStateOption); var saveStageStateOption = new Option <bool>(OptionsResources.SaveStageStateOptionLong, OptionsResources.SaveStageStateOptionDescription); command.AddGlobalOption(saveStageStateOption); var azureTargetOption = new Option <AzureIntegrationServicesTarget>(OptionsResources.AzureTargetOptionLong, OptionsResources.AzureTargetOptionDescription); command.AddGlobalOption(azureTargetOption); var subscriptionIdOption = new Option <string>(OptionsResources.AzureSubscriptionIdOptionLong, OptionsResources.AzureSubscriptionIdOptionDescription); command.AddGlobalOption(subscriptionIdOption); var primaryRegionOption = new Option <string>(OptionsResources.AzurePrimaryRegionOptionLong, OptionsResources.AzurePrimaryRegionOptionDescription); command.AddGlobalOption(primaryRegionOption); var secondaryRegionOption = new Option <string>(OptionsResources.AzureSecondaryRegionOptionLong, OptionsResources.AzureSecondaryRegionOptionDescription); command.AddGlobalOption(secondaryRegionOption); var deploymentEnvAliases = new string[] { OptionsResources.DeploymentEnvOptionShort, OptionsResources.DeploymentEnvOptionLong }; var deploymentEnvOption = new Option <string>(deploymentEnvAliases, OptionsResources.DeploymentEnvOptionDescription); command.AddGlobalOption(deploymentEnvOption); var uniqueDeploymentIdOption = new Option <string>(OptionsResources.UniqueDeploymentIdOptionLong, string.Format(CultureInfo.CurrentCulture, OptionsResources.UniqueDeploymentIdOptionDescription, AppOptionsService.UniqueDeploymentIdLengthLimit)); command.AddGlobalOption(uniqueDeploymentIdOption); // Set handler command.Handler = CommandHandler.Create(async() => { _logger.LogError(ErrorMessages.SpecifyVerb, OptionsResources.AssessVerb, OptionsResources.MigrateVerb, OptionsResources.ConvertVerb, OptionsResources.VerifyVerb); return(await Task.FromResult <int>(ReturnCodeConstants.ArgsError).ConfigureAwait(false)); }); return(command); }