Example #1
0
        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);
        }
Example #2
0
        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);
        }