/// <summary> /// エラーログと必要に応じてスタックトレースを表示します。 /// </summary> /// <param name="message"></param> /// <param name="e"></param> public static void LogError(string message, Exception e = null) { ConsoleColorWriter.SetToConsole(ConsoleColor.Red); WriteError("エラー : " + message); if (e != null) { WriteError("詳細 : "); WriteError(e.ToString()); } ConsoleColorWriter.SetToConsole(); }
/// <summary> /// 警告ログと必要に応じてスタックトレースを表示します。 /// </summary> /// <param name="message"></param> /// <param name="e"></param> public static void LogWarn(string message, Exception e = null) { ConsoleColorWriter.SetToConsole(ConsoleColor.Yellow); WriteLog("警告 : " + message); if (e != null) { WriteLog("詳細 : "); WriteLog(e.ToString()); } ConsoleColorWriter.SetToConsole(); }
static void Main(string[] args) { var application = new CommandLineApplication(throwOnUnexpectedArg: false) { Name = nameof(ExcelFormatter), }; application.HelpOption("-?|-h|--help"); var SelectA1 = application.Option("-a1|--selecta1", "指定のシートに対して、「A1セル」を選択した状態にします。", CommandOptionType.NoValue); var copyTemplate = application.Option("-te|--template", "指定のシートに対してテンプレートを適用します。", CommandOptionType.NoValue); var fixPageSetup = application.Option("-pa|--page", "指定のシートに対してページ設定を適用します。", CommandOptionType.NoValue); var fixFont = application.Option("-fo|--font", "指定のシートに対してフォント設定を適用します。", CommandOptionType.NoValue); var fixHeader = application.Option("-hd|--header", "指定のシートに対してヘッダ設定を適用します。", CommandOptionType.NoValue); var fixFooter = application.Option("-ft|--footer", "指定のシートに対してフッタ設定を適用します。", CommandOptionType.NoValue); var removeSampleText = application.Option("-sr|--removesample", "指定のシートに対してSAMPLE文字を取り除きます。", CommandOptionType.NoValue); var addSampleText = application.Option("-sa|--addsample", "指定のシートに対してSAMPLE文字を追加します。", CommandOptionType.NoValue); var overWriteWriteTime = application.Option("-ts|--timestamp", "対象ファイルのタイムスタンプを上書きします。", CommandOptionType.NoValue); var mirror = application.Option("-mr|--mirror", "処理対象ファイルを上書きせず、<output dir>に処理後のファイルをコピーします。", CommandOptionType.SingleValue); var subDirectory = application.Option("-sd|--subDirectory", "処理対象について、サブフォルダも検索します。", CommandOptionType.NoValue); var createConfig = application.Option("-c|--config", "コンフィグファイルの雛形を作成し、アプリケーションを終了します。", CommandOptionType.NoValue); var directoryList = application.Argument("dir", "処理対象ディレクトリ", true); // アプリケーション実行内容 application.OnExecute(() => { ConsoleColorWriter.SetToConsole(); // コンフィグファイルの雛形を作成 if (createConfig.HasValue()) { ConfigCreator.Save(); return(1); } if (directoryList.Values.Count < 1) { application.ShowHelp(); return(1); } // 実行プロセス ExecuteOptions executeOptions = new ExecuteOptions { SelectA1 = SelectA1.HasValue(), CopyTemplate = copyTemplate.HasValue(), FixPageSetup = fixPageSetup.HasValue(), FixFont = fixFont.HasValue(), FixHeader = fixHeader.HasValue(), FixFooter = fixFooter.HasValue(), RemoveSampleText = removeSampleText.HasValue(), AddSampleText = addSampleText.HasValue(), OverWriteWriteTime = overWriteWriteTime.HasValue(), SubDirectory = subDirectory.HasValue(), MirrorDirectory = mirror.Value() }; if (!executeOptions.HasValue()) { LogUtil.LogWarn("実行オプションが指定されていません。"); application.ShowHelp(); return(1); } if (!String.IsNullOrEmpty(mirror.Value()) && !System.IO.Directory.Exists(mirror.Value())) { LogUtil.LogError("[-mr] オプションの値に存在しないディレクトリ名が含まれています。"); return(1); } using (ExcelFormatterApp excelApp = new ExcelFormatterApp()) { try { excelApp.Open(); if (!ConfigValidator.Validate(excelApp.Config)) { return(1); } // 選択したオプションをコンソールに表示 Console.WriteLine("----------------------------------------"); Console.WriteLine("以下の操作を実行します:"); foreach (var option in application.Options) { if (option.HasValue()) { Console.WriteLine(option.Description); } } Console.WriteLine("----------------------------------------"); FormatExcelFiles(directoryList, executeOptions, excelApp); } catch (ApplicationException e) { LogUtil.LogWarn("アプリケーションの初期化に失敗しました。", e); return(1); } finally { excelApp.Close(); Console.WriteLine("----------------------------------------"); LogUtil.Log("処理が終了しました。"); ConsoleColorWriter.ResetToConsole(); } } return(0); }); try { application.Execute(args); } catch (CommandParsingException) { application.ShowHelp(); } }