diff options
Diffstat (limited to 'railties/lib/rails/commands/common_commands_tasks.rb')
-rw-r--r-- | railties/lib/rails/commands/common_commands_tasks.rb | 68 |
1 files changed, 68 insertions, 0 deletions
diff --git a/railties/lib/rails/commands/common_commands_tasks.rb b/railties/lib/rails/commands/common_commands_tasks.rb new file mode 100644 index 0000000000..c1484d7ae2 --- /dev/null +++ b/railties/lib/rails/commands/common_commands_tasks.rb @@ -0,0 +1,68 @@ +module Rails + module CommonCommandsTasks # :nodoc: + def run_command!(command) + command = parse_command(command) + + if command_whitelist.include?(command) + send(command) + else + run_rake_task(command) + end + end + + def generate + generate_or_destroy(:generate) + end + + def destroy + generate_or_destroy(:destroy) + end + + def test + require_command!("test") + end + + def version + argv.unshift "--version" + require_command!("application") + end + + def help + write_help_message + write_commands(commands) + end + + private + + def generate_or_destroy(command) + require "rails/generators" + require_application_and_environment! + load_generators + require_command!(command) + end + + def require_command!(command) + require "rails/commands/#{command}" + end + + def write_help_message + puts help_message + end + + def write_commands(commands) + width = commands.map { |name, _| name.size }.max || 10 + commands.each { |command| printf(" %-#{width}s %s\n", *command) } + end + + def parse_command(command) + case command + when "--version", "-v" + "version" + when "--help", "-h" + "help" + else + command + end + end + end +end |