Class: EY::Serverside::CLI

Inherits:
Thor
  • Object
show all
Extended by:
CLIHelpers
Defined in:
lib/engineyard-serverside/cli.rb

Constant Summary

Constants inherited from Thor

Thor::HELP_MAPPINGS, Thor::THOR_RESERVED_WORDS, Thor::VERSION

Instance Attribute Summary

Attributes included from Thor::Base

#args, #options, #parent_options

Instance Method Summary collapse

Methods included from CLIHelpers

account_app_env_options, config_option, framework_env_option, instances_options, stack_option, verbose_option

Methods inherited from Thor

check_unknown_options!, check_unknown_options?, default_task, desc, help, #help, long_desc, map, method_option, method_options, printable_tasks, register, subcommand, subcommands, task_help

Methods included from Thor::Base

included, #initialize, register_klass_file, shell, shell=, subclass_files, subclasses

Instance Method Details

#deploy(default_task = :deploy) ⇒ Object



34
35
36
37
38
# File 'lib/engineyard-serverside/cli.rb', line 34

def deploy(default_task=:deploy)
  init_and_propagate(options, default_task.to_s) do |servers, config, shell|
    EY::Serverside::Deploy.new(servers, config, shell).send(default_task)
  end
end

#disable_maintenanceObject



56
57
58
59
60
# File 'lib/engineyard-serverside/cli.rb', line 56

def disable_maintenance
  init_and_propagate(options, 'disable_maintenance') do |servers, config, shell|
    EY::Serverside::Maintenance.new(servers, config, shell).manually_disable
  end
end

#enable_maintenanceObject



45
46
47
48
49
# File 'lib/engineyard-serverside/cli.rb', line 45

def enable_maintenance
  init_and_propagate(options, 'enable_maintenance') do |servers, config, shell|
    EY::Serverside::Maintenance.new(servers, config, shell).manually_enable
  end
end

#hook(hook_name) ⇒ Object



76
77
78
79
80
# File 'lib/engineyard-serverside/cli.rb', line 76

def hook(hook_name)
  init(options, "hook-#{hook_name}") do |config, shell|
    EY::Serverside::DeployHook.new(config, shell, hook_name).call
  end
end

#integrateObject



89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
# File 'lib/engineyard-serverside/cli.rb', line 89

def integrate
  app_dir = Pathname.new "/data/#{options[:app]}"
  current_app_dir = app_dir.join("current")

  # so that we deploy to the same place there that we have here
  integrate_options = options.dup
  integrate_options[:release_path] = current_app_dir.realpath.to_s

  # we have to deploy the same SHA there as here
  integrate_options[:branch] = current_app_dir.join('REVISION').read.strip

  init_and_propagate(integrate_options, 'integrate') do |servers, config, shell|

    # We have to rsync the entire app dir, so we need all the permissions to be correct!
    chown_command = "find #{app_dir} -not -user #{config.user} -or -not -group #{config.group} -exec chown #{config.user}:#{config.group} {} +"
    shell.logged_system("sudo sh -l -c '#{chown_command}'", servers.detect {|s| s.local?})

    servers.run_for_each! do |server|
      sync  = server.sync_directory_command(app_dir)
      clean = server.command_on_server('sh -l -c', "rm -rf #{current_app_dir}")
      "(#{sync}) && (#{clean})"
    end

    # deploy local-ref to other instances into /data/$app/local-current
    EY::Serverside::Deploy.new(servers, config, shell).cached_deploy
  end
end

#restartObject



122
123
124
125
126
# File 'lib/engineyard-serverside/cli.rb', line 122

def restart
  init_and_propagate(options, 'restart') do |servers, config, shell|
    EY::Serverside::Deploy.new(servers, config, shell).restart_with_maintenance_page
  end
end