public static ArgumentsRule ExistingFilesOnly( this ArgumentsRule rule) => rule.And(new ArgumentsRule(o => o.Arguments .Where(filePath => !File.Exists(filePath) && !Directory.Exists(filePath)) .Select(FileDoesNotExist) .FirstOrDefault()));
protected internal Option( string[] aliases, string help, ArgumentsRule arguments = null, Option[] options = null) { if (aliases == null) { throw new ArgumentNullException(nameof(aliases)); } if (!aliases.Any()) { throw new ArgumentException("An option must have at least one alias."); } if (aliases.Any(string.IsNullOrWhiteSpace)) { throw new ArgumentException("An option alias cannot be null, empty, or consist entirely of whitespace."); } RawAliases = aliases; foreach (var alias in aliases) { this.aliases.Add(alias.RemovePrefix()); } HelpText = help; Name = aliases .Select(a => a.RemovePrefix()) .OrderBy(a => a.Length) .Last(); if (options != null && options.Any()) { foreach (var option in options) { option.Parent = this; DefinedOptions.Add(option); } } ArgumentsRule = arguments ?? Accept.NoArguments(); if (options != null) { ArgumentsRule = ArgumentsRule.And(Accept.ZeroOrMoreOf(options)); } AllowedValues = ArgumentsRule.AllowedValues; suggest = ArgumentsRule.Suggest; }
public static ArgumentsRule ExistingFilesOnly( this ArgumentsRule rule) => rule.And(new ArgumentsRule(o => { foreach (var filePath in o.Arguments) { if (!File.Exists(filePath) && !Directory.Exists(filePath)) { return($"File does not exist: {filePath}"); } } return(null); }));
public static ArgumentsRule LegalFilePathsOnly( this ArgumentsRule rule) => rule.And(new ArgumentsRule(o => { foreach (var arg in o.Arguments) { try { var fileInfo = new FileInfo(arg); } catch (NotSupportedException ex) { return(ex.Message); } catch (ArgumentException ex) { return(ex.Message); } } return(null); }));
public static ArgumentsRule WithSuggestionsFrom( this ArgumentsRule rule, Func <string, IEnumerable <string> > suggest) => rule.And(WithSuggestionsFrom(suggest));
public static ArgumentsRule And( this ArgumentsRule rule, Func <AppliedOption, string> error) { return(rule.And(new ArgumentsRule(error))); }
public static ArgumentsRule WithSuggestionsFrom( this ArgumentsRule rule, params string[] values) => rule.And(WithSuggestionsFrom(values));