1e101a53ffc517a9249d0442bbf435ce214374e9bKeisuke Kuroyanagi/*
2e101a53ffc517a9249d0442bbf435ce214374e9bKeisuke Kuroyanagi * Copyright (C) 2014 The Android Open Source Project
3e101a53ffc517a9249d0442bbf435ce214374e9bKeisuke Kuroyanagi *
4e101a53ffc517a9249d0442bbf435ce214374e9bKeisuke Kuroyanagi * Licensed under the Apache License, Version 2.0 (the "License");
5e101a53ffc517a9249d0442bbf435ce214374e9bKeisuke Kuroyanagi * you may not use this file except in compliance with the License.
6e101a53ffc517a9249d0442bbf435ce214374e9bKeisuke Kuroyanagi * You may obtain a copy of the License at
7e101a53ffc517a9249d0442bbf435ce214374e9bKeisuke Kuroyanagi *
8e101a53ffc517a9249d0442bbf435ce214374e9bKeisuke Kuroyanagi *      http://www.apache.org/licenses/LICENSE-2.0
9e101a53ffc517a9249d0442bbf435ce214374e9bKeisuke Kuroyanagi *
10e101a53ffc517a9249d0442bbf435ce214374e9bKeisuke Kuroyanagi * Unless required by applicable law or agreed to in writing, software
11e101a53ffc517a9249d0442bbf435ce214374e9bKeisuke Kuroyanagi * distributed under the License is distributed on an "AS IS" BASIS,
12e101a53ffc517a9249d0442bbf435ce214374e9bKeisuke Kuroyanagi * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13e101a53ffc517a9249d0442bbf435ce214374e9bKeisuke Kuroyanagi * See the License for the specific language governing permissions and
14e101a53ffc517a9249d0442bbf435ce214374e9bKeisuke Kuroyanagi * limitations under the License.
15e101a53ffc517a9249d0442bbf435ce214374e9bKeisuke Kuroyanagi */
16e101a53ffc517a9249d0442bbf435ce214374e9bKeisuke Kuroyanagi
17e101a53ffc517a9249d0442bbf435ce214374e9bKeisuke Kuroyanagi#include <cstdio>
18e101a53ffc517a9249d0442bbf435ce214374e9bKeisuke Kuroyanagi
194bfa3b273ea9d23fa642b5b87b1113429f5f539bKeisuke Kuroyanagi#include "dict_toolkit_defines.h"
204bfa3b273ea9d23fa642b5b87b1113429f5f539bKeisuke Kuroyanagi#include "utils/command_utils.h"
214bfa3b273ea9d23fa642b5b87b1113429f5f539bKeisuke Kuroyanagi
224bfa3b273ea9d23fa642b5b87b1113429f5f539bKeisuke Kuroyanagivoid usage(int argc, char **argv) {
234bfa3b273ea9d23fa642b5b87b1113429f5f539bKeisuke Kuroyanagi    fprintf(stderr, "Usage: %s <command> [arguments]\n", argc > 0 ? argv[0] : "dicttoolkit");
244bfa3b273ea9d23fa642b5b87b1113429f5f539bKeisuke Kuroyanagi}
254bfa3b273ea9d23fa642b5b87b1113429f5f539bKeisuke Kuroyanagi
26e101a53ffc517a9249d0442bbf435ce214374e9bKeisuke Kuroyanagiint main(int argc, char **argv) {
274bfa3b273ea9d23fa642b5b87b1113429f5f539bKeisuke Kuroyanagi    if (argc < MIN_ARG_COUNT) {
284bfa3b273ea9d23fa642b5b87b1113429f5f539bKeisuke Kuroyanagi        usage(argc, argv);
29bd48963bdf20aa58b2f4d0cca762aba0f2917858Keisuke Kuroyanagi        return 1;
304bfa3b273ea9d23fa642b5b87b1113429f5f539bKeisuke Kuroyanagi    }
314bfa3b273ea9d23fa642b5b87b1113429f5f539bKeisuke Kuroyanagi    using namespace latinime::dicttoolkit;
324bfa3b273ea9d23fa642b5b87b1113429f5f539bKeisuke Kuroyanagi    const CommandType commandType = CommandUtils::getCommandType(argv[1]);
334bfa3b273ea9d23fa642b5b87b1113429f5f539bKeisuke Kuroyanagi    if (commandType == CommandType::Unknown) {
344bfa3b273ea9d23fa642b5b87b1113429f5f539bKeisuke Kuroyanagi        CommandUtils::printCommandUnknownMessage(argv[0], argv[1]);
35bd48963bdf20aa58b2f4d0cca762aba0f2917858Keisuke Kuroyanagi        return 1;
364bfa3b273ea9d23fa642b5b87b1113429f5f539bKeisuke Kuroyanagi    }
37bd48963bdf20aa58b2f4d0cca762aba0f2917858Keisuke Kuroyanagi    const auto executor = CommandUtils::getCommandExecutor(commandType);
38bd48963bdf20aa58b2f4d0cca762aba0f2917858Keisuke Kuroyanagi    return executor(argc - 1, argv + 1);
39e101a53ffc517a9249d0442bbf435ce214374e9bKeisuke Kuroyanagi}
40