lib/negroku/cli/bootstrap.rb in negroku-2.0.0.pre2 vs lib/negroku/cli/bootstrap.rb in negroku-2.0.0.pre3

- old
+ new

@@ -1,114 +1,48 @@ -require 'erb' -require 'pathname' - module Negroku::Bootstrap extend self def install data = {} data[:application_name] = ask_name data[:repo_url] = select_repo - custom_capify select_stages, data + custom_capify data end - def add_stage(stage=nil) - if stage.nil? - name = ask_stage - end - - custom_stage(name) - - end - - def remove_stage(stage=nil) - - current_stages = Dir[File.join(@deploy_dir, '*.rb')].map(){|f| File.basename(f)} - - if stage.nil? - selections = Ask.checkbox "What stages you want to remove", current_stages - stages_to_delete = selections.map.with_index { |v, i| current_stages[i] if v}.compact - else - stages_to_delete = ["#{stage}.rb"] - end - - if stages_to_delete.count > 0 - stages_to_delete.each do |s| - path_to_delete = File.join(@deploy_dir, s) - begin - FileUtils.rm(path_to_delete) - rescue - puts "The stage '#{s}' doesn't exist" - end - end - else - puts "Nothing to do" - end - - end - private - @tasks_dir = Pathname.new('lib/capistrano/tasks') - @config_dir = Pathname.new('config') - @deploy_dir = @config_dir.join('deploy') - - @deploy_rb = File.expand_path("../../templates/negroku/deploy.rb.erb", __FILE__) - @stage_rb = File.expand_path("../../templates/negroku/stage.rb.erb", __FILE__) - @capfile = File.expand_path("../../templates/negroku/Capfile.erb", __FILE__) - # This code was exatracted from capistrano to be used with our own templates # https://github.com/capistrano/capistrano/blob/68e7632c5f16823a09c324d556a208e096abee62/lib/capistrano/tasks/install.rake - def custom_capify(stages, data={}) + def custom_capify(data={}) + # defaults + data[:server_url] = "" + data[:branch] = "master" - FileUtils.mkdir_p @deploy_dir + FileUtils.mkdir_p AppDirectory.deploy - template = File.read(@deploy_rb) - file = @config_dir.join('deploy.rb') - File.open(file, 'w+') do |f| - f.write(ERB.new(template).result(binding)) - puts I18n.t(:written_file, scope: :negroku, file: file) - end + deploy_rb = AppDirectory.config.join('deploy.rb') + capfile = AppDirectory.root.join('Capfile') + build_template("negroku/deploy.rb.erb", deploy_rb, binding) + build_template('negroku/Capfile.erb', capfile, binding) - template = File.read(@stage_rb) - stages.each do |stage| - file = @deploy_dir.join("#{stage}.rb") - File.open(file, 'w+') do |f| - f.write(ERB.new(template).result(binding)) - puts I18n.t(:written_file, scope: :negroku, file: file) - end - end + FileUtils.mkdir_p AppDirectory.tasks - FileUtils.mkdir_p @tasks_dir - FileUtils.cp(@capfile, 'Capfile') - - puts I18n.t :capified, scope: :negroku end - def custom_stage(stage, data={}) - - end - # Ask the application name def ask_name question = I18n.t :application_name, scope: :negroku Ask.input question, default: File.basename(Dir.getwd) end - # Ask the stage name - def ask_stage - question = I18n.t :ask_stage_name, scope: :negroku - Ask.input question - end - # Get git remotes from current git and ask to select one def select_repo remote_urls = %x(git remote -v 2> /dev/null | awk '{print $2}' | uniq).split("\n") remote_urls << (I18n.t :other, scope: :negroku) @@ -117,23 +51,8 @@ if selected_idx == remote_urls.length - 1 question = I18n.t :type_repo_url, scope: :negroku Ask.input question else remote_urls[selected_idx] end - end - - # Ask which stages to setup - def select_stages - default_stages = %w(staging production other) - - question = I18n.t :choose_stages, scope: :negroku - selected_idx = Ask.checkbox question, default_stages - - stages = selected_idx.map.with_index { |v, i| default_stages[i] if v}.compact - - if selected_idx.last - question = "List the extra stages (comma separated)" - stages[0...-1].concat (Ask.input question).split(",").map(&:strip) - else stages end end end