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)