示例#1
0
        /// <inheritdoc />
        public override bool HandleOption(CommandLineUtilities.Option opt)
        {
            if (string.Equals("pathFormat", opt.Name, StringComparison.OrdinalIgnoreCase) ||
                string.Equals("p", opt.Name, StringComparison.OrdinalIgnoreCase))
            {
                Slashes = CommandLineUtilities.ParseEnumOption <PathFixer.SlashType>(opt);

                switch (Slashes)
                {
                case PathFixer.SlashType.Default:
                case PathFixer.SlashType.Unix:
                case PathFixer.SlashType.Windows:
                    break;

                default:
                    throw Contract.AssertFailure("Unexpected enum value for SlashType");
                }

                return(true);
            }

            if (string.Equals("lowerCaseDirectories", opt.Name, StringComparison.OrdinalIgnoreCase) ||
                string.Equals("l", opt.Name, StringComparison.OrdinalIgnoreCase))
            {
                LowerCaseDirectories = CommandLineUtilities.ParseBooleanOption(opt);
                return(true);
            }

            return(base.HandleOption(opt));
        }
示例#2
0
文件: Program.cs 项目: erikma/BuildXL
        private static Options ParseOptions(string[] toolArgs)
        {
            var opts = new OptionsBuilder(Options.Defaults);

            var cli = new CommandLineUtilities(toolArgs);

            foreach (var opt in cli.Options)
            {
                switch (opt.Name.TrimEnd('-', '+'))
                {
                case ArgVerbose:
                case "v":
                    opts.Verbose = CommandLineUtilities.ParseBooleanOption(opt);
                    break;

                case ArgLogToStdOut:
                case "o":
                    opts.LogToStdOut = CommandLineUtilities.ParseBooleanOption(opt);
                    break;

                case "numKextConnections":
                case "c":
                    Console.WriteLine($"*** WARNING *** option /{opt.Name} has no effect any longer");
                    break;

                case ArgReportQueueSizeMB:
                case "r":
                    opts.ReportQueueSizeMB = CommandLineUtilities.ParseUInt32Option(opt, 1, 1024);
                    break;

                case ArgEnableReportBatching:
                case "b":
                    opts.EnableReportBatching = CommandLineUtilities.ParseBooleanOption(opt);
                    break;

                case ArgEnableStatistics:
                case "s":
                    opts.EnableTelemetry = CommandLineUtilities.ParseBooleanOption(opt);
                    break;

                case ArgProcessTimeout:
                case "t":
                    // Max is currently set to 4 hours and should suffice
                    opts.ProcessTimeout = CommandLineUtilities.ParseInt32Option(opt, (int)s_defaultProcessTimeOut, (int)s_defaultProcessTimeOutMax);
                    break;

                case ArgTrackDirectoryCreation:
                case "d":
                    opts.TrackDirectoryCreation = CommandLineUtilities.ParseBooleanOption(opt);
                    break;

                case ArgSandboxKindUsed:
                case "k":
                    opts.SandboxKindUsed = CommandLineUtilities.ParseEnumOption <SandboxKind>(opt);
                    Console.WriteLine("BVla " + opts.SandboxKindUsed);
                    break;

                default:
                    throw new InvalidArgumentException($"Unrecognized option {opt.Name}");
                }
            }

            return(opts.Finish());
        }