# encoding: utf-8 module Adhearsion module CLI class AhnCommand < Thor map %w(-h --h -help --help) => :help map %w(-v --v -version --version) => :version map %w(-) => :start register ::Adhearsion::CLI::PluginCommand, 'plugin', 'plugin ', 'Plugin Tasks.' check_unknown_options! def self.exit_on_failure? true end desc "create /path/to/directory", "Create a new Adhearsion application under the given path" method_option :empty, type: :boolean def create(path) require 'adhearsion/generators/app/app_generator' Generators::AppGenerator.start end desc "generate [generator_name] arguments", Generators.help def generate(generator_name = nil, *args) if generator_name Generators.invoke generator_name else help 'generate' end end desc "version", "Shows Adhearsion version" def version say "Adhearsion v#{Adhearsion::VERSION}" exit 0 end desc "start ", "Start the Adhearsion server in the foreground with a console" method_option :noconsole, type: :boolean, aliases: %w{--no-console} def start(path = nil) path = execute_from_app_dir! path say "Starting Adhearsion server at #{Dir.pwd}" Adhearsion::Initializer.start :console => !options[:noconsole] end protected def execute_from_app_dir!(path) if in_app? and running_script_ahn? return Dir.pwd end path ||= Dir.pwd if in_app? raise PathRequired, ARGV[0] if path.nil? or path.empty? Dir.chdir path do raise PathInvalid, path unless ScriptAhnLoader.in_ahn_application? args = ARGV.dup args[1] = '.' ScriptAhnLoader.exec_script_ahn! args end path end def running_script_ahn? $0.to_s == "script/ahn" end def in_app? ScriptAhnLoader.in_ahn_application? or ScriptAhnLoader.in_ahn_application_subdirectory? end def method_missing(action, *args) help raise UnknownCommand, [action, *args] * " " end end end end