From e70ff8cdcea727cbac2ff0bd251108c04dfb6b78 Mon Sep 17 00:00:00 2001 From: abap34 Date: Tue, 2 Jan 2024 01:33:17 +0900 Subject: [PATCH] =?UTF-8?q?=E3=82=B3=E3=83=9E=E3=83=B3=E3=83=89=E3=83=A9?= =?UTF-8?q?=E3=82=A4=E3=83=B3=E5=BC=95=E6=95=B0=E3=81=AE=E4=B8=80=E9=83=A8?= =?UTF-8?q?=E3=81=8C=E6=AD=A3=E5=B8=B8=E3=81=AB=E7=9C=81=E7=95=A5=E3=81=A7?= =?UTF-8?q?=E3=81=8D=E3=81=A6=E3=81=84=E3=81=AA=E3=81=8B=E3=81=A3=E3=81=9F?= =?UTF-8?q?=E5=95=8F=E9=A1=8C=E3=82=92=E4=BF=AE=E6=AD=A3?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/almo.cpp | 53 +++++++++++++++++++++++++++++++++++++--------------- 1 file changed, 38 insertions(+), 15 deletions(-) diff --git a/src/almo.cpp b/src/almo.cpp index 23c99cb..10dd5a1 100644 --- a/src/almo.cpp +++ b/src/almo.cpp @@ -5,6 +5,32 @@ #include #include "utils.hpp" +void help(bool err) { + if (err) { + std::cerr << "使用法: almo <入力> [オプション]" << std::endl; + std::cerr << "オプション:" << std::endl; + std::cerr << " -o <出力> 出力ファイル名を指定します。 指定しない場合標準出力に出力されます。" << std::endl; + std::cerr << " -t <テーマ> テーマを指定します。デフォルトは light です。" << std::endl; + std::cerr << " -c CSSファイルを指定します。デフォルトは テーマに付属するものが使用されます。" << std::endl; + std::cerr << " -e <テーマ> エディタのテーマを指定します。デフォルトは です。" << std::endl; + std::cerr << " -d デバッグモードで実行します。" << std::endl; + std::cerr << " -g 構文木をdot言語として出力します。" << std::endl; + std::cerr << " -h ヘルプを表示します。" << std::endl; + } + else { + std::cout << "使用法: almo <入力> [オプション]" << std::endl; + std::cout << "オプション:" << std::endl; + std::cout << " -o <出力> 出力ファイル名を指定します。 指定しない場合標準出力に出力されます。" << std::endl; + std::cout << " -t <テーマ> テーマを指定します。デフォルトは light です。" << std::endl; + std::cout << " -c CSSファイルを指定します。デフォルトは テーマに付属するものが使用されます。" << std::endl; + std::cout << " -e <テーマ> エディタのテーマを指定します。デフォルトは です。" << std::endl; + std::cout << " -d デバッグモードで実行します。" << std::endl; + std::cout << " -g 構文木をdot言語として出力します。" << std::endl; + std::cout << " -h ヘルプを表示します。" << std::endl; + } +} + + int main(int argc, char* argv[]) { // コマンドライン引数のデフォルト値を設定 std::string theme = "light"; @@ -15,6 +41,16 @@ int main(int argc, char* argv[]) { bool plot_graph = false; std::string out_path = "__stdout__"; + if (argc < 2) { + std::cerr << "コマンドライン引数が不足しています。" << std::endl; + help(true); + exit(1); + } + + if (argc == 2 && argv[1][0] == '-' && argv[1][1] == 'h') { + help(false); + exit(0); + } for (int i = 2; i < argc; i++) { if (argv[i][0] == '-') { @@ -44,23 +80,10 @@ int main(int argc, char* argv[]) { plot_graph = true; } else if (argv[i][1] == 'h') { - if (argc > 3) { - throw InvalidCommandLineArgumentsError("不正なコマンドライン引数です。 -h オプションと他のオプションは同時に指定できません。"); - exit(1); - } - std::cout << "使用法: almo <入力> [オプション]" << std::endl; - std::cout << "オプション:" << std::endl; - std::cout << " -o <出力> 出力ファイル名を指定します。 指定しない場合標準出力に出力されます。" << std::endl; - std::cout << " -t <テーマ> テーマを指定します。デフォルトは light です。" << std::endl; - std::cout << " -c CSSファイルを指定します。デフォルトは テーマに付属するものが使用されます。" << std::endl; - std::cout << " -e <テーマ> エディタのテーマを指定します。デフォルトは です。" << std::endl; - std::cout << " -d デバッグモードで実行します。" << std::endl; - std::cout << " -g 構文木をdot言語として出力します。" << std::endl; - std::cout << " -h ヘルプを表示します。" << std::endl; + throw InvalidCommandLineArgumentsError("不正なコマンドライン引数です。 -h オプションと他のオプションは同時に指定できません。"); } else { - std::cerr << "Unkown command line arguments is passed." << std::endl; - std::cerr << "Please check the option by `almo -h`" << std::endl; + std::cerr << "不正なコマンドライン引数です。 -h オプションでヘルプを確認してください。" << std::endl; exit(1); } }