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