cli.rb |
|
---|---|
require 'thor'
require 'recap'
require 'recap/support/shell_command'
module Recap::Support |
|
Recap provides a simple command-line tool ( |
class CLI < Thor
include Thor::Actions
attr_accessor :name, :repository, :recipe, :server
def self.source_root
File.expand_path("../templates", __FILE__)
end
desc 'setup', 'Setup basic capistrano recipes, e.g: recap setup'
method_option :name
method_option :repository
method_option :server
method_option :recipe, :type => 'string', :banner => 'static|ruby|rails'
def setup
self.name = options["name"] || guess_name
self.repository = options["repo"] || guess_repository
self.recipe = options["recipe"] || guess_recipe
self.server = options["server"] || 'your-server-address'
template 'Capfile.erb', 'Capfile'
end
private
def guess_name
Dir.pwd.split(File::SEPARATOR).last
end
def guess_repository
ShellCommand.execute('git config --get remote.origin.url').strip
rescue
warn "Unable to determine git repository. Setting to <unknown>."
"<unknown>"
end
def guess_recipe
if File.exist?('Gemfile.lock')
if File.read('Gemfile.lock') =~ / rails /
'rails'
else
'ruby'
end
else
'static'
end
end
end
end |