diff options
Diffstat (limited to 'native/dicttoolkit/src/command_executors')
8 files changed, 69 insertions, 9 deletions
diff --git a/native/dicttoolkit/src/command_executors/diff_executor.cpp b/native/dicttoolkit/src/command_executors/diff_executor.cpp index 077a40090..bf6830686 100644 --- a/native/dicttoolkit/src/command_executors/diff_executor.cpp +++ b/native/dicttoolkit/src/command_executors/diff_executor.cpp @@ -30,8 +30,19 @@ const char *const DiffExecutor::COMMAND_NAME = "diff"; /* static */ void DiffExecutor::printUsage() { printf("*** %s\n", COMMAND_NAME); - printf("Usage: %s\n", COMMAND_NAME); - printf("Shows differences between two dictionaries.\n\n"); + getArgumentsParser().printUsage(COMMAND_NAME, "Shows differences between two dictionaries."); +} + +/* static */ const ArgumentsParser DiffExecutor::getArgumentsParser() { + std::unordered_map<std::string, OptionSpec> optionSpecs; + optionSpecs["p"] = OptionSpec::switchOption("(plumbing) produce output suitable for a script"); + + const std::vector<ArgumentSpec> argumentSpecs = { + ArgumentSpec::singleArgument("dict1", "dictionary file"), + ArgumentSpec::singleArgument("dict2", "dictionary file") + }; + + return ArgumentsParser(std::move(optionSpecs), std::move(argumentSpecs)); } } // namespace dicttoolkit diff --git a/native/dicttoolkit/src/command_executors/diff_executor.h b/native/dicttoolkit/src/command_executors/diff_executor.h index fc8dc0d8f..f92ae49d5 100644 --- a/native/dicttoolkit/src/command_executors/diff_executor.h +++ b/native/dicttoolkit/src/command_executors/diff_executor.h @@ -18,6 +18,7 @@ #define LATINIME_DICT_TOOLKIT_DIFF_EXECUTOR_H #include "dict_toolkit_defines.h" +#include "utils/arguments_parser.h" namespace latinime { namespace dicttoolkit { @@ -28,6 +29,7 @@ class DiffExecutor final { static int run(const int argc, char **argv); static void printUsage(); + static const ArgumentsParser getArgumentsParser(); private: DISALLOW_IMPLICIT_CONSTRUCTORS(DiffExecutor); diff --git a/native/dicttoolkit/src/command_executors/header_executor.cpp b/native/dicttoolkit/src/command_executors/header_executor.cpp index 068a62c31..b3d273b4e 100644 --- a/native/dicttoolkit/src/command_executors/header_executor.cpp +++ b/native/dicttoolkit/src/command_executors/header_executor.cpp @@ -30,9 +30,19 @@ const char *const HeaderExecutor::COMMAND_NAME = "header"; /* static */ void HeaderExecutor::printUsage() { printf("*** %s\n", COMMAND_NAME); - printf("Usage: %s\n", COMMAND_NAME); - printf("Prints the header contents of a dictionary file.\n\n"); + getArgumentsParser().printUsage(COMMAND_NAME, + "Prints the header contents of a dictionary file."); } +/* static */ const ArgumentsParser HeaderExecutor::getArgumentsParser() { + std::unordered_map<std::string, OptionSpec> optionSpecs; + optionSpecs["p"] = OptionSpec::switchOption("(plumbing) produce output suitable for a script"); + + const std::vector<ArgumentSpec> argumentSpecs = { + ArgumentSpec::singleArgument("dict", "prints the header contents of a dictionary file") + }; + + return ArgumentsParser(std::move(optionSpecs), std::move(argumentSpecs)); +} } // namespace dicttoolkit } // namespace latinime diff --git a/native/dicttoolkit/src/command_executors/header_executor.h b/native/dicttoolkit/src/command_executors/header_executor.h index 4cdeb1a99..44cc9cfc4 100644 --- a/native/dicttoolkit/src/command_executors/header_executor.h +++ b/native/dicttoolkit/src/command_executors/header_executor.h @@ -18,6 +18,7 @@ #define LATINIME_DICT_TOOLKIT_HEADER_EXECUTOR_H #include "dict_toolkit_defines.h" +#include "utils/arguments_parser.h" namespace latinime { namespace dicttoolkit { @@ -28,6 +29,7 @@ class HeaderExecutor final { static int run(const int argc, char **argv); static void printUsage(); + static const ArgumentsParser getArgumentsParser(); private: DISALLOW_IMPLICIT_CONSTRUCTORS(HeaderExecutor); diff --git a/native/dicttoolkit/src/command_executors/info_executor.cpp b/native/dicttoolkit/src/command_executors/info_executor.cpp index c4d84cab3..351da4aff 100644 --- a/native/dicttoolkit/src/command_executors/info_executor.cpp +++ b/native/dicttoolkit/src/command_executors/info_executor.cpp @@ -17,6 +17,9 @@ #include "command_executors/info_executor.h" #include <cstdio> +#include <string> +#include <unordered_map> +#include <vector> namespace latinime { namespace dicttoolkit { @@ -30,8 +33,21 @@ const char *const InfoExecutor::COMMAND_NAME = "info"; /* static */ void InfoExecutor::printUsage() { printf("*** %s\n", COMMAND_NAME); - printf("Usage: %s\n", COMMAND_NAME); - printf("Prints various information about a dictionary file.\n\n"); + getArgumentsParser().printUsage(COMMAND_NAME, + "Prints various information about a dictionary file."); +} + +/* static */const ArgumentsParser InfoExecutor::getArgumentsParser() { + std::unordered_map<std::string, OptionSpec> optionSpecs; + optionSpecs["p"] = OptionSpec::switchOption("(plumbing) produce output suitable for a script"); + + const std::vector<ArgumentSpec> argumentSpecs = { + ArgumentSpec::singleArgument("dict", "dictionary file name"), + ArgumentSpec::variableLengthArguments("word", 0 /* minCount */, + ArgumentSpec::UNLIMITED_COUNT, "word to show information") + }; + + return ArgumentsParser(std::move(optionSpecs), std::move(argumentSpecs)); } } // namespace dicttoolkit diff --git a/native/dicttoolkit/src/command_executors/info_executor.h b/native/dicttoolkit/src/command_executors/info_executor.h index 4ffa74fb0..d4106d59f 100644 --- a/native/dicttoolkit/src/command_executors/info_executor.h +++ b/native/dicttoolkit/src/command_executors/info_executor.h @@ -18,6 +18,7 @@ #define LATINIME_DICT_TOOLKIT_INFO_EXECUTOR_H #include "dict_toolkit_defines.h" +#include "utils/arguments_parser.h" namespace latinime { namespace dicttoolkit { @@ -28,6 +29,7 @@ class InfoExecutor final { static int run(const int argc, char **argv); static void printUsage(); + static const ArgumentsParser getArgumentsParser(); private: DISALLOW_IMPLICIT_CONSTRUCTORS(InfoExecutor); diff --git a/native/dicttoolkit/src/command_executors/makedict_executor.cpp b/native/dicttoolkit/src/command_executors/makedict_executor.cpp index ea62e3c37..8a84e8069 100644 --- a/native/dicttoolkit/src/command_executors/makedict_executor.cpp +++ b/native/dicttoolkit/src/command_executors/makedict_executor.cpp @@ -30,10 +30,25 @@ const char *const MakedictExecutor::COMMAND_NAME = "makedict"; /* static */ void MakedictExecutor::printUsage() { printf("*** %s\n", COMMAND_NAME); - printf("Usage: %s\n", COMMAND_NAME); - printf("Converts a source dictionary file to one or several outputs.\n" + getArgumentsParser().printUsage(COMMAND_NAME, + "Converts a source dictionary file to one or several outputs.\n" "Source can be a binary dictionary file or a combined format file.\n" - "Binary version 2 (Jelly Bean), 4, and combined format outputs are supported.\n\n"); + "Binary version 2 (Jelly Bean), 4, and combined format outputs are supported."); +} + +/* static */const ArgumentsParser MakedictExecutor::getArgumentsParser() { + std::unordered_map<std::string, OptionSpec> optionSpecs; + optionSpecs["o"] = OptionSpec::keyValueOption("format", "2", + "output format version: 2/4/combined"); + optionSpecs["t"] = OptionSpec::keyValueOption("mode", "off", + "code point table switch: on/off/auto"); + + const std::vector<ArgumentSpec> argumentSpecs = { + ArgumentSpec::singleArgument("src_dict", "source dictionary file"), + ArgumentSpec::singleArgument("dest_dict", "output dictionary file") + }; + + return ArgumentsParser(std::move(optionSpecs), std::move(argumentSpecs)); } } // namespace dicttoolkit diff --git a/native/dicttoolkit/src/command_executors/makedict_executor.h b/native/dicttoolkit/src/command_executors/makedict_executor.h index ae1309f60..c3de977a3 100644 --- a/native/dicttoolkit/src/command_executors/makedict_executor.h +++ b/native/dicttoolkit/src/command_executors/makedict_executor.h @@ -18,6 +18,7 @@ #define LATINIME_DICT_TOOLKIT_MAKEDICT_EXECUTOR_H #include "dict_toolkit_defines.h" +#include "utils/arguments_parser.h" namespace latinime { namespace dicttoolkit { @@ -28,6 +29,7 @@ class MakedictExecutor final { static int run(const int argc, char **argv); static void printUsage(); + static const ArgumentsParser getArgumentsParser(); private: DISALLOW_IMPLICIT_CONSTRUCTORS(MakedictExecutor); |