lib/adhearsion/cli_commands.rb in adhearsion-2.0.0.alpha2 vs lib/adhearsion/cli_commands.rb in adhearsion-2.0.0.alpha3

- old
+ new

@@ -26,15 +26,28 @@ true end desc "create /path/to/directory", "Create a new Adhearsion application under the given path" def create(path) - require 'adhearsion/generators' require 'adhearsion/generators/app/app_generator' - Adhearsion::Generators::AppGenerator.start + Generators::AppGenerator.start end + desc "generate [generator_name] arguments", "Invoke a generator" + def generate(generator_name = nil, *args) + require 'adhearsion/generators/controller/controller_generator' + Generators.add_generator :controller, Adhearsion::Generators::ControllerGenerator + require 'adhearsion/generators/plugin/plugin_generator' + Generators.add_generator :plugin, Adhearsion::Generators::PluginGenerator + + if generator_name + Generators.invoke generator_name + else + Generators.help + end + end + desc "version", "Shows Adhearsion version" def version say "Adhearsion v#{Adhearsion::VERSION}" exit 0 end @@ -53,17 +66,20 @@ desc "stop </path/to/directory>", "Stop a running Adhearsion server" method_option :pidfile, :type => :string, :aliases => %w(--pid-file) def stop(path = nil) execute_from_app_dir! path + path ||= '.' + pid_file = if options[:pidfile] - File.expand_path File.exists?(File.expand_path(options[:pidfile])) ? - options[:pidfile] : - File.join(path, options[:pidfile]) + File.exists?(File.expand_path(options[:pidfile])) ? + options[:pidfile] : + File.join(path, options[:pidfile]) else - path + '/adhearsion.pid' + File.join path, Adhearsion::Initializer::DEFAULT_PID_FILE_NAME end + pid_file = File.expand_path pid_file begin pid = File.read(pid_file).to_i rescue raise PIDReadError, pid_file @@ -77,10 +93,12 @@ ::Process.kill "TERM", pid sleep 0.25 while process_exists?(pid) && Time.now < waiting_timeout ::Process.kill "KILL", pid rescue Errno::ESRCH end + + File.delete pid_file end desc "restart </path/to/directory>", "Restart the Adhearsion server" method_option :pidfile, :type => :string, :aliases => %w(--pid-file) def restart(path = nil) @@ -139,9 +157,16 @@ end class PathRequired < Thor::Error def initialize(cmd) super "A valid path is required for #{cmd}, unless run from an Adhearson app directory" + end + end + + class UnknownGeneratorError < Thor::Error + def initialize(gentype) + puts "Please specify generator to use (#{Adhearsion::Generators.mappings.keys.join(", ")})" + super "Unknown command: #{gentype}" end end class PathInvalid < Thor::Error def initialize(path)