internal static bool TryParseProperties(string ask, IEnumerable <string> name, CommonFindCommandOptions options) { if (!TryParseAsEnum( ask, OptionNames.Ask, out AskMode askMode, defaultValue: AskMode.None, OptionValueProviders.AskModeProvider)) { return(false); } if (askMode == AskMode.Value && ConsoleOut.Verbosity < Verbosity.Normal) { WriteError($"Option '{OptionNames.GetHelpText(OptionNames.Ask)}' cannot have value " + $"'{OptionValueProviders.AskModeProvider.GetValue(nameof(AskMode.Value)).HelpValue}' when " + $"'{OptionNames.GetHelpText(OptionNames.Verbosity)}' is set to " + $"'{OptionValueProviders.VerbosityProvider.GetValue(ConsoleOut.Verbosity.ToString()).HelpValue}'."); return(false); } if (!FilterParser.TryParse( name, OptionNames.Name, OptionValueProviders.PatternOptionsProvider, out Filter? nameFilter, out FileNamePart namePart, allowNull: true)) { return(false); } options.AskMode = askMode; options.NameFilter = nameFilter; options.NamePart = namePart; return(true); }
public bool TryParse(CommonFindCommandOptions options) { var baseOptions = (FileSystemCommandOptions)options; if (!TryParse(baseOptions)) { return(false); } options = (CommonFindCommandOptions)baseOptions; if (!TryParseProperties(Ask, Name, options)) { return(false); } if (!TryParseAsEnumFlags(Highlight, OptionNames.Highlight, out HighlightOptions highlightOptions, defaultValue: HighlightOptions.Default, provider: OptionValueProviders.FindHighlightOptionsProvider)) { return(false); } if (!FilterParser.TryParse(Content, OptionNames.Content, OptionValueProviders.PatternOptionsWithoutPartProvider, out Filter? contentFilter, allowNull: true)) { return(false); } if (!TryParseDisplay( values: Display, optionName: OptionNames.Display, contentDisplayStyle: out ContentDisplayStyle? contentDisplayStyle, pathDisplayStyle: out PathDisplayStyle? pathDisplayStyle, lineDisplayOptions: out LineDisplayOptions lineDisplayOptions, lineContext: out LineContext lineContext, displayParts: out DisplayParts displayParts, fileProperties: out ImmutableArray <FileProperty> fileProperties, indent: out string?indent, separator: out string?separator, contentDisplayStyleProvider: OptionValueProviders.ContentDisplayStyleProvider, pathDisplayStyleProvider: OptionValueProviders.PathDisplayStyleProvider)) { return(false); } if (pathDisplayStyle == PathDisplayStyle.Relative && options.Paths.Length > 1 && options.SortOptions != null) { pathDisplayStyle = PathDisplayStyle.Full; } if (options.AskMode == AskMode.Value && (contentDisplayStyle == ContentDisplayStyle.AllLines || contentDisplayStyle == ContentDisplayStyle.UnmatchedLines)) { WriteError($"Option '{OptionNames.GetHelpText(OptionNames.Display)}' cannot have value '{OptionValueProviders.ContentDisplayStyleProvider.GetValue(contentDisplayStyle.Value.ToString()).HelpValue}' when option '{OptionNames.GetHelpText(OptionNames.Ask)}' has value '{OptionValueProviders.AskModeProvider.GetValue(nameof(AskMode.Value)).HelpValue}'."); return(false); } if (!TryParseMaxCount(MaxCount, out int maxMatchingFiles, out int maxMatchesInFile)) { return(false); } options.Format = new OutputDisplayFormat( contentDisplayStyle: contentDisplayStyle ?? ContentDisplayStyle.Line, pathDisplayStyle: pathDisplayStyle ?? PathDisplayStyle.Full, lineOptions: lineDisplayOptions, lineContext: lineContext, displayParts: displayParts, fileProperties: fileProperties, indent: indent, separator: separator); options.HighlightOptions = highlightOptions; options.SearchTarget = GetSearchTarget(); options.ContentFilter = contentFilter; options.MaxMatchesInFile = maxMatchesInFile; options.MaxMatchingFiles = maxMatchingFiles; options.MaxTotalMatches = 0; return(true); }
public bool TryParse(CommonFindCommandOptions options) { var baseOptions = (CommonRegexCommandOptions)options; if (!TryParse(baseOptions)) { return(false); } options = (CommonFindCommandOptions)baseOptions; if (!TryParsePaths(out ImmutableArray <PathInfo> paths)) { return(false); } if (!TryParseAsEnumFlags(Attributes, OptionNames.Attributes, out FileSystemAttributes attributes, provider: OptionValueProviders.FileSystemAttributesProvider)) { return(false); } if (!TryParseAsEnumFlags(AttributesToSkip, OptionNames.AttributesToSkip, out FileSystemAttributes attributesToSkip, provider: OptionValueProviders.FileSystemAttributesToSkipProvider)) { return(false); } if (!TryParseEncoding(Encoding, out Encoding defaultEncoding, EncodingHelpers.UTF8NoBom)) { return(false); } if (!TryParseSortOptions(Sort, OptionNames.Sort, out SortOptions sortOptions)) { return(false); } if (!FilterParser.TryParse(IncludeDirectory, OptionNames.IncludeDirectory, OptionValueProviders.PatternOptionsProvider, out Filter directoryFilter, allowNull: true)) { return(false); } if (!FilterParser.TryParse( Extension, OptionNames.Extension, OptionValueProviders.ExtensionOptionsProvider, out Filter extensionFilter, allowNull: true, defaultNamePart: NamePartKind.Extension, includedPatternOptions: PatternOptions.List | PatternOptions.Equals | PatternOptions.IgnoreCase)) { return(false); } if (!TryParseFileProperties( FileProperties, OptionNames.Properties, out FilePropertyFilter filePropertyFilter)) { return(false); } if ((attributes & FileSystemAttributes.Empty) != 0) { if ((attributesToSkip & FileSystemAttributes.Empty) != 0) { Logger.WriteError($"Value '{OptionValueProviders.FileSystemAttributesProvider.GetValue(nameof(FileSystemAttributes.Empty)).HelpValue}' cannot be specified both for '{OptionNames.GetHelpText(OptionNames.Attributes)}' and '{OptionNames.GetHelpText(OptionNames.AttributesToSkip)}'."); return(false); } options.Empty = true; } else if ((attributesToSkip & FileSystemAttributes.Empty) != 0) { options.Empty = false; } options.Paths = paths; options.DirectoryFilter = directoryFilter; options.ExtensionFilter = extensionFilter; options.Attributes = GetFileAttributes(attributes); options.AttributesToSkip = GetFileAttributes(attributesToSkip); options.RecurseSubdirectories = !NoRecurse; options.Progress = Progress; options.DefaultEncoding = defaultEncoding; options.SortOptions = sortOptions; options.FilePropertyFilter = filePropertyFilter; FileSystemAttributes = attributes; return(true); }