1/*
2 * Copyright (C) 2014 The Android Open Source Project
3 *
4 * Licensed under the Apache License, Version 2.0 (the "License");
5 * you may not use this file except in compliance with the License.
6 * You may obtain a copy of the License at
7 *
8 *      http://www.apache.org/licenses/LICENSE-2.0
9 *
10 * Unless required by applicable law or agreed to in writing, software
11 * distributed under the License is distributed on an "AS IS" BASIS,
12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13 * See the License for the specific language governing permissions and
14 * limitations under the License.
15 */
16
17#include "command_executors/makedict_executor.h"
18
19#include <cstdio>
20
21namespace latinime {
22namespace dicttoolkit {
23
24const char *const MakedictExecutor::COMMAND_NAME = "makedict";
25
26/* static */ int MakedictExecutor::run(const int argc, char **argv) {
27    const ArgumentsAndOptions argumentsAndOptions =
28            getArgumentsParser().parseArguments(argc, argv, true /* printErrorMessages */);
29    if (!argumentsAndOptions.isValid()) {
30        printUsage();
31        return 1;
32    }
33    fprintf(stderr, "Command '%s' has not been implemented yet.\n", COMMAND_NAME);
34    return 0;
35}
36
37/* static */ void MakedictExecutor::printUsage() {
38    printf("*** %s\n", COMMAND_NAME);
39    getArgumentsParser().printUsage(COMMAND_NAME,
40            "Converts a source dictionary file to one or several outputs.\n"
41            "Source can be a binary dictionary file or a combined format file.\n"
42            "Binary version 2 (Jelly Bean), 4, and combined format outputs are supported.");
43}
44
45/* static */const ArgumentsParser MakedictExecutor::getArgumentsParser() {
46    std::unordered_map<std::string, OptionSpec> optionSpecs;
47    optionSpecs["o"] = OptionSpec::keyValueOption("format", "2",
48            "output format version: 2/4/combined");
49    optionSpecs["t"] = OptionSpec::keyValueOption("mode", "off",
50            "code point table switch: on/off/auto");
51
52    const std::vector<ArgumentSpec> argumentSpecs = {
53        ArgumentSpec::singleArgument("src_dict", "source dictionary file"),
54        ArgumentSpec::singleArgument("dest_dict", "output dictionary file")
55    };
56
57    return ArgumentsParser(std::move(optionSpecs), std::move(argumentSpecs));
58}
59
60} // namespace dicttoolkit
61} // namespace latinime
62