14bfa3b273ea9d23fa642b5b87b1113429f5f539bKeisuke Kuroyanagi/* 24bfa3b273ea9d23fa642b5b87b1113429f5f539bKeisuke Kuroyanagi * Copyright (C) 2014 The Android Open Source Project 34bfa3b273ea9d23fa642b5b87b1113429f5f539bKeisuke Kuroyanagi * 44bfa3b273ea9d23fa642b5b87b1113429f5f539bKeisuke Kuroyanagi * Licensed under the Apache License, Version 2.0 (the "License"); 54bfa3b273ea9d23fa642b5b87b1113429f5f539bKeisuke Kuroyanagi * you may not use this file except in compliance with the License. 64bfa3b273ea9d23fa642b5b87b1113429f5f539bKeisuke Kuroyanagi * You may obtain a copy of the License at 74bfa3b273ea9d23fa642b5b87b1113429f5f539bKeisuke Kuroyanagi * 84bfa3b273ea9d23fa642b5b87b1113429f5f539bKeisuke Kuroyanagi * http://www.apache.org/licenses/LICENSE-2.0 94bfa3b273ea9d23fa642b5b87b1113429f5f539bKeisuke Kuroyanagi * 104bfa3b273ea9d23fa642b5b87b1113429f5f539bKeisuke Kuroyanagi * Unless required by applicable law or agreed to in writing, software 114bfa3b273ea9d23fa642b5b87b1113429f5f539bKeisuke Kuroyanagi * distributed under the License is distributed on an "AS IS" BASIS, 124bfa3b273ea9d23fa642b5b87b1113429f5f539bKeisuke Kuroyanagi * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 134bfa3b273ea9d23fa642b5b87b1113429f5f539bKeisuke Kuroyanagi * See the License for the specific language governing permissions and 144bfa3b273ea9d23fa642b5b87b1113429f5f539bKeisuke Kuroyanagi * limitations under the License. 154bfa3b273ea9d23fa642b5b87b1113429f5f539bKeisuke Kuroyanagi */ 164bfa3b273ea9d23fa642b5b87b1113429f5f539bKeisuke Kuroyanagi 174bfa3b273ea9d23fa642b5b87b1113429f5f539bKeisuke Kuroyanagi#include "utils/command_utils.h" 184bfa3b273ea9d23fa642b5b87b1113429f5f539bKeisuke Kuroyanagi 19bd48963bdf20aa58b2f4d0cca762aba0f2917858Keisuke Kuroyanagi#include <cstdio> 20bd48963bdf20aa58b2f4d0cca762aba0f2917858Keisuke Kuroyanagi 21bd48963bdf20aa58b2f4d0cca762aba0f2917858Keisuke Kuroyanagi#include "command_executors/diff_executor.h" 22bd48963bdf20aa58b2f4d0cca762aba0f2917858Keisuke Kuroyanagi#include "command_executors/header_executor.h" 23bd48963bdf20aa58b2f4d0cca762aba0f2917858Keisuke Kuroyanagi#include "command_executors/help_executor.h" 24bd48963bdf20aa58b2f4d0cca762aba0f2917858Keisuke Kuroyanagi#include "command_executors/info_executor.h" 25bd48963bdf20aa58b2f4d0cca762aba0f2917858Keisuke Kuroyanagi#include "command_executors/makedict_executor.h" 26bd48963bdf20aa58b2f4d0cca762aba0f2917858Keisuke Kuroyanagi 274bfa3b273ea9d23fa642b5b87b1113429f5f539bKeisuke Kuroyanaginamespace latinime { 284bfa3b273ea9d23fa642b5b87b1113429f5f539bKeisuke Kuroyanaginamespace dicttoolkit { 294bfa3b273ea9d23fa642b5b87b1113429f5f539bKeisuke Kuroyanagi 304bfa3b273ea9d23fa642b5b87b1113429f5f539bKeisuke Kuroyanagi/* static */ CommandType CommandUtils::getCommandType(const std::string &commandName) { 31bd48963bdf20aa58b2f4d0cca762aba0f2917858Keisuke Kuroyanagi if (commandName == InfoExecutor::COMMAND_NAME) { 324bfa3b273ea9d23fa642b5b87b1113429f5f539bKeisuke Kuroyanagi return CommandType::Info; 33bd48963bdf20aa58b2f4d0cca762aba0f2917858Keisuke Kuroyanagi } else if (commandName == DiffExecutor::COMMAND_NAME) { 344bfa3b273ea9d23fa642b5b87b1113429f5f539bKeisuke Kuroyanagi return CommandType::Diff; 35bd48963bdf20aa58b2f4d0cca762aba0f2917858Keisuke Kuroyanagi } else if (commandName == MakedictExecutor::COMMAND_NAME) { 364bfa3b273ea9d23fa642b5b87b1113429f5f539bKeisuke Kuroyanagi return CommandType::Makedict; 37bd48963bdf20aa58b2f4d0cca762aba0f2917858Keisuke Kuroyanagi } else if (commandName == HeaderExecutor::COMMAND_NAME) { 384bfa3b273ea9d23fa642b5b87b1113429f5f539bKeisuke Kuroyanagi return CommandType::Header; 39bd48963bdf20aa58b2f4d0cca762aba0f2917858Keisuke Kuroyanagi } else if (commandName == HelpExecutor::COMMAND_NAME) { 404bfa3b273ea9d23fa642b5b87b1113429f5f539bKeisuke Kuroyanagi return CommandType::Help; 414bfa3b273ea9d23fa642b5b87b1113429f5f539bKeisuke Kuroyanagi } else { 424bfa3b273ea9d23fa642b5b87b1113429f5f539bKeisuke Kuroyanagi return CommandType::Unknown; 434bfa3b273ea9d23fa642b5b87b1113429f5f539bKeisuke Kuroyanagi } 444bfa3b273ea9d23fa642b5b87b1113429f5f539bKeisuke Kuroyanagi} 454bfa3b273ea9d23fa642b5b87b1113429f5f539bKeisuke Kuroyanagi 46bd48963bdf20aa58b2f4d0cca762aba0f2917858Keisuke Kuroyanagi/* static */ void CommandUtils::printCommandUnknownMessage(const std::string &programName, 47bd48963bdf20aa58b2f4d0cca762aba0f2917858Keisuke Kuroyanagi const std::string &commandName) { 48bd48963bdf20aa58b2f4d0cca762aba0f2917858Keisuke Kuroyanagi fprintf(stderr, "Command '%s' is unknown. Try '%s %s' for more information.\n", 49bd48963bdf20aa58b2f4d0cca762aba0f2917858Keisuke Kuroyanagi commandName.c_str(), programName.c_str(), HelpExecutor::COMMAND_NAME); 50bd48963bdf20aa58b2f4d0cca762aba0f2917858Keisuke Kuroyanagi} 51bd48963bdf20aa58b2f4d0cca762aba0f2917858Keisuke Kuroyanagi 52bd48963bdf20aa58b2f4d0cca762aba0f2917858Keisuke Kuroyanagi/* static */ std::function<int(int, char **)> CommandUtils::getCommandExecutor( 53bd48963bdf20aa58b2f4d0cca762aba0f2917858Keisuke Kuroyanagi const CommandType commandType) { 54bd48963bdf20aa58b2f4d0cca762aba0f2917858Keisuke Kuroyanagi switch (commandType) { 55bd48963bdf20aa58b2f4d0cca762aba0f2917858Keisuke Kuroyanagi case CommandType::Info: 56bd48963bdf20aa58b2f4d0cca762aba0f2917858Keisuke Kuroyanagi return InfoExecutor::run; 57bd48963bdf20aa58b2f4d0cca762aba0f2917858Keisuke Kuroyanagi case CommandType::Diff: 58bd48963bdf20aa58b2f4d0cca762aba0f2917858Keisuke Kuroyanagi return DiffExecutor::run; 59bd48963bdf20aa58b2f4d0cca762aba0f2917858Keisuke Kuroyanagi case CommandType::Makedict: 60bd48963bdf20aa58b2f4d0cca762aba0f2917858Keisuke Kuroyanagi return MakedictExecutor::run; 61bd48963bdf20aa58b2f4d0cca762aba0f2917858Keisuke Kuroyanagi case CommandType::Header: 62bd48963bdf20aa58b2f4d0cca762aba0f2917858Keisuke Kuroyanagi return HeaderExecutor::run; 63bd48963bdf20aa58b2f4d0cca762aba0f2917858Keisuke Kuroyanagi case CommandType::Help: 64bd48963bdf20aa58b2f4d0cca762aba0f2917858Keisuke Kuroyanagi return HelpExecutor::run; 65bd48963bdf20aa58b2f4d0cca762aba0f2917858Keisuke Kuroyanagi default: 66bd48963bdf20aa58b2f4d0cca762aba0f2917858Keisuke Kuroyanagi return [] (int, char **) -> int { 67bd48963bdf20aa58b2f4d0cca762aba0f2917858Keisuke Kuroyanagi printf("Command executor not found."); 68bd48963bdf20aa58b2f4d0cca762aba0f2917858Keisuke Kuroyanagi return 1; 69bd48963bdf20aa58b2f4d0cca762aba0f2917858Keisuke Kuroyanagi }; 70bd48963bdf20aa58b2f4d0cca762aba0f2917858Keisuke Kuroyanagi } 71bd48963bdf20aa58b2f4d0cca762aba0f2917858Keisuke Kuroyanagi} 72bd48963bdf20aa58b2f4d0cca762aba0f2917858Keisuke Kuroyanagi 734bfa3b273ea9d23fa642b5b87b1113429f5f539bKeisuke Kuroyanagi} // namespace dicttoolkit 744bfa3b273ea9d23fa642b5b87b1113429f5f539bKeisuke Kuroyanagi} // namespace latinime 75