Пример #1
0
        public static MSBCTPROptions ParseForOptions(string[] args)
        {
            List <string> lookupDirectories = new List <string>();

            MSBCTPROptions options = new MSBCTPROptions();

            OptionSet p = new OptionSet()
            {
                { "<>", Strings.TargetArgumentDescription, v => options.TargetDirectory = v },
                { "validate", Strings.ValidateDescription, v => options.Validate = v != null },
                { "lookupdirectory=|ld=", Strings.LookupDirectoryArgumentDescription, v => lookupDirectories.Add(v) },
                { "?|h|help", Strings.HelpDescription, v => options.ShowHelp = v != null },
            };

            try
            {
                p.Parse(args);
                options.LookupDirectories = lookupDirectories;
            }
            catch (OptionException)
            {
                Console.WriteLine(Strings.ShortUsageMessage);
                Console.WriteLine($"Try `--help` for more information.");
                Environment.Exit(160);
            }

            if (options.ShowHelp || string.IsNullOrEmpty(options.TargetDirectory))
            {
                int exitCode = ShowUsage(p);
                Environment.Exit(exitCode);
            }

            return(options);
        }
Пример #2
0
        static void Main(string[] args)
        {
            MSBCTPROptions options = ParseForOptions(args);

            if (!options.LookupDirectories.Any())
            {
                Environment.ExitCode = -1;
                Console.WriteLine(Strings.NotEnoughDirectoryArguments);
            }
            else
            {
                // First Ensure that all Directories are Valid
                if (IsValidDirectoryArgument(options.TargetDirectory))
                {
                    bool allDirectoriesValid = true;

                    // Validate the Remaining Arguments
                    foreach (string directoryArgument in options.LookupDirectories)
                    {
                        allDirectoriesValid = allDirectoriesValid && IsValidDirectoryArgument(directoryArgument);
                    }

                    if (allDirectoriesValid)
                    {
                        bool saveChanges = options.Validate == false;

                        Environment.ExitCode = PrintToConsole(options.TargetDirectory, options.LookupDirectories, saveChanges);

                        if (saveChanges)
                        {
                            // Always Return Zero
                            Environment.ExitCode = 0;
                        }
                    }
                    else
                    {
                        Environment.ExitCode = -1;
                        Console.WriteLine(Strings.OneOrMoreInvalidDirectories);
                    }
                }
                else
                {
                    Environment.ExitCode = -1;
                    Console.WriteLine(Strings.OneOrMoreInvalidDirectories);
                }
            }
        }