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()); } }
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; }