Example #1
0
        static void Main(string[] args)
        {
            var app = new CommandLineApplication(throwOnUnexpectedArg: false)
            {
                // アプリケーション名(ヘルプの出力で使用される)
                Name = "CommandLineTest",
            };

            // ヘルプ出力のトリガーとなるオプションを指定
            app.HelpOption("-?|-h|--help");

            // オプションの設定
            var commonOptions = app.Option("--common|-common",
                                           "common オプション",
                                           CommandOptionType.NoValue);

            app.OnExecute(() =>
            {
                Console.WriteLine("Hello World!");
                if (commonOptions.HasValue())
                {
                    Console.WriteLine("共通オプションあり");
                }
                return(0);
            });

            app.Command("hoge", (command) =>
            {
                // 説明(ヘルプの出力で使用される)
                command.Description = "Hogeを出力する";

                // コマンドについてのヘルプ出力のトリガーとなるオプションを指定
                command.HelpOption("-?|-h|--help");

                // コマンドの引数(名前と説明を引数で渡しているが、これはヘルプ出力で使用される)
                var hogeArgs = command.Argument("[Hogeの引数]", "Hogeの引数の説明");

                // オプションの設定
                var hogeOptions = command.Option("-o|--option <opitons>",
                                                 "hogeのオプション",
                                                 CommandOptionType.MultipleValue);

                command.OnExecute(() =>
                {
                    var location = hogeArgs.Value != null ? $"引数あり {hogeArgs.Value}" : "引数なし";
                    Console.WriteLine("Hoge: " + location);

                    foreach (var value in hogeOptions.Values)
                    {
                        Console.WriteLine("Hogeのオプション: " + value);
                    }

                    // Command 内でオプションの定義をしていないので、これは必ず false になる
                    // (Command の外で定義したオプションは Command 内では有効にならない)
                    if (commonOptions.HasValue())
                    {
                        Console.WriteLine("common オプションあり");
                    }
                    return(0);
                });
            },
                        // 未定義のオプションがあった場合に例外とするかどうか
                        false);

            app.Execute(args);

            Console.ReadKey();
        }