private ExtractOptions ParseExtractOptions(string arg) { const string AllowedOptions = "n"; // Check if there is any sub options if (!arg.Contains(':') && !arg.Contains('=')) { return(ExtractOptions.Directory); } // Get chars after : or = var options = arg.Split(':', '=').Last().ToLower().ToCharArray(); // Check that all sub options are valid if (options.Any(x => AllowedOptions.Contains(x) == false)) { throw new ArgumentException("Unknown -e sub options: " + new string(options) + "\nSee --help page for valid options."); } var value = ExtractOptions.Directory; if (options.Contains('n')) { value = ExtractOptions.NoDirectory; } return(value); }
private ListOptions ParseListOptions(string arg) { const string AllowedOptions = "afnsx"; // Check if there is any sub options if (!arg.Contains(':') && !arg.Contains('=')) { return(ListOptions.None); } // Get chars after : or = var options = arg.Split(':', '=').Last().ToLower().ToCharArray(); // Check that all sub options are valid if (options.Any(x => AllowedOptions.Contains(x) == false)) { throw new ArgumentException("Unknown -l sub options: " + new string(options) + "\nSee --help page for valid options."); } var value = ListOptions.None; foreach (char c in options) { switch (c) { case 'a': value |= ListOptions.Archive; break; case 'f': value |= ListOptions.FullPath; break; case 'n': value |= ListOptions.Filename; break; case 's': value |= ListOptions.FileSize; break; case 'x': value |= ListOptions.FileSizeFormat; break; } } return(value); }