Пример #1
0
        static void Main(string[] args)
        {
            var options    = new CommandLineArguments();
            var argsParser = new CommandLineAnalyzer <CommandLineArguments>();

            if (argsParser.TryParse(args, options) && !options.Help)
            {
                using (var app = new Program())
                {
                    if (!string.IsNullOrWhiteSpace(options.ModelAutomatonFile))
                    {
                        app.LoadModelAutomaton(options.ModelAutomatonFile);

                        if (!string.IsNullOrWhiteSpace(options.ModelDiagram))
                        {
                            app.SaveModelDiagram(options.ModelDiagram);
                        }
                    }

                    if (!string.IsNullOrWhiteSpace(options.BatchTest))
                    {
                        app.RunCommandsFromFile(options.BatchTest);
                    }
                    else if (string.IsNullOrWhiteSpace(options.LtlFormula))
                    {
                        app.DoInteractive();
                    }
                    else
                    {
                        app.Verify(options.LtlFormula);

                        if (!string.IsNullOrWhiteSpace(options.FormulaDiagram))
                        {
                            app.SaveLtlDiagram(options.FormulaDiagram);
                        }

                        if (!string.IsNullOrWhiteSpace(options.VerifierDiagram))
                        {
                            app.SaveVerifierDiagram(options.VerifierDiagram);
                        }
                    }
                }
            }
            else
            {
                Console.WriteLine(argsParser.MakeHelp());
            }
        }
Пример #2
0
        static void setupCommandLineAnalizer()
        {
            cmdAnz = new CommandLineAnalyzer();
            CommandOption co_src = new CommandOption(@"-src", true, true
                                                     , @"-src      [作業コピーフォルダ名]       コピー元リポジトリ作業コピーパスを指定"
                                                     , (arg) => { if (!Directory.Exists(arg))
                                                                  {
                                                                      throw new Exception(@"-srcフォルダがありません");
                                                                  }
                                                     });
            CommandOption co_user = new CommandOption(@"-user", true, true
                                                      , @"-user     [-srcリポジトリのユーザ]     ログイン用ユーザ名を指定"
                                                      , null);
            CommandOption co_psswd = new CommandOption(@"-psswd", true, true
                                                       , @"-passwd   [-srcリポジトリのパスワード] ログイン用パスワードを指定"
                                                       , null);
            CommandOption co_filerFl = new CommandOption(@"-filterFl", true, true
                                                         , @"-filterFl [フィルタファイルパス]       抽出ファイルを絞り込むためのパターンを記載したファイルパス"
                                                         , (arg) => { if (!File.Exists(arg))
                                                                      {
                                                                          throw new Exception(@"-filterFlファイルがありません");
                                                                      }
                                                         });
            CommandOption co_strtRev = new CommandOption(@"-strtRev", true, true
                                                         , @"-strtRev  [開始抽出リビジョン]         抽出開始のリビジョン番号を指定"
                                                         , (arg) => { long.Parse(arg); });
            CommandOption co_endRev = new CommandOption(@"-endRev", true, true
                                                        , @"-strtRev  [終了抽出リビジョン]         抽出終了のリビジョン番号を指定"
                                                        , (arg) => { long.Parse(arg); });
            CommandOption co_tmpbat = new CommandOption(@"-tmpbat", true, true
                                                        , @"-tmpbat   [テンプバッチファイルパス]   "
                                                        , (arg) => { if (!File.Exists(arg))
                                                                     {
                                                                         throw new Exception(@"-tmpbatファイルがありません");
                                                                     }
                                                        });
            CommandOption co_workDir = new CommandOption(@"-workDir", true, true
                                                         , @"-workDir  [作業フォルダ名]             作業フォルダパスをフルパスで指定"
                                                         , (arg) => {
                if (arg.IndexOf(@":") < 0)
                {
                    throw new Exception(@"-workDirはフルパスで指定します");
                }
                if (Directory.Exists(arg))
                {
                    throw new Exception(@"-workDirはすでに存在します。存在しないフォルダを指定します。処理中に自動作成します");
                }
            });
            CommandOption co_excDel = new CommandOption(@"-excDel", false, false
                                                        , @"-excDel                                削除分の操作を抽出しない場合、指定"
                                                        , null);
            CommandOption co_Q = new CommandOption(@"/?", false, false
                                                   , @"/?                                     ヘルプを表示"
                                                   , null);

            cmdAnz.helpOption = co_Q;
            cmdAnz.addCommandOption(co_src);
            cmdAnz.addCommandOption(co_user);
            cmdAnz.addCommandOption(co_psswd);
            cmdAnz.addCommandOption(co_filerFl);
            cmdAnz.addCommandOption(co_strtRev);
            cmdAnz.addCommandOption(co_endRev);
            cmdAnz.addCommandOption(co_tmpbat);
            cmdAnz.addCommandOption(co_excDel);
            cmdAnz.addCommandOption(co_workDir);

            if (!cmdAnz.analyze())
            {
                throw new Exception(@"");
            }

            _src     = co_src.arg;
            _user    = co_user.arg;
            _psswd   = co_psswd.arg;
            _filerFl = co_filerFl.arg;
            _strtRev = long.Parse(co_strtRev.arg);
            _endRev  = long.Parse(co_endRev.arg);
            if (_strtRev > _endRev)
            {
                throw new Exception(@"-sttRevと-endRevの大小関係が不正です。-sttRevは-EndRev以下である必要があります。");
            }
            _tmpbat = co_tmpbat.arg;
            _excDel = false;
            if (co_excDel.selected)
            {
                _excDel = true;
            }
            _workdir = co_workDir.arg;
        }