class Luban::Deployment::Project
Attributes
apps[R]
Public Instance Methods
display_name()
click to toggle source
# File lib/luban/deployment/cli/project.rb, line 13 def display_name; @display_name ||= "#{stage} #{project.camelcase}"; end
init_application(args:, opts:)
click to toggle source
# File lib/luban/deployment/cli/project.rb, line 92 def init_application(args:, opts:) singleton_class.send(:include, Luban::Deployment::Helpers::Generator::Application) define_singleton_method(:application) { args[:application] } create_application_skeleton end
package_users_for(package_name, package_version, exclude: [], servers: [])
click to toggle source
# File lib/luban/deployment/cli/project.rb, line 15 def package_users_for(package_name, package_version, exclude: [], servers: []) apps.values.inject([]) do |package_users, app| unless exclude.include?(app.name) package_users |= app.package_users_for(package_name, package_version, servers: servers) end package_users end end
password_for(user)
click to toggle source
# File lib/luban/deployment/cli/project.rb, line 24 def password_for(user) @passwords_mutex.synchronize do if @passwords[user].nil? @passwords[user] = ask(prompt: "Password for #{user}", echo: false) end @passwords[user] end end
start_sequence()
click to toggle source
Luban::Deployment::Command::Tasks::Control::Actions.each do |action|
define_method(action) do |args:, opts:| apps.each_value do |app| app.send(__method__, args: args, opts: opts) if app.controllable? end end
end
# File lib/luban/deployment/cli/project.rb, line 65 def start_sequence; @start_sequence ||= apps.keys; end
stop_sequence()
click to toggle source
# File lib/luban/deployment/cli/project.rb, line 66 def stop_sequence; @stop_sequence ||= start_sequence.reverse; end
Protected Instance Methods
application_base_class(app)
click to toggle source
# File lib/luban/deployment/cli/project.rb, line 118 def application_base_class(app) Object.const_get("#{project}:#{app}".camelcase) end
application_initialized?(app)
click to toggle source
# File lib/luban/deployment/cli/project.rb, line 149 def application_initialized?(app) File.file?("#{apps_path}/#{app}/config/deploy/#{stage}.rb") end
load_libraries()
click to toggle source
# File lib/luban/deployment/cli/project.rb, line 112 def load_libraries applications.each do |app| require "#{apps_path}/#{app}/lib/application" end end
set_default_parameters()
click to toggle source
Calls superclass method
Luban::Deployment::Command#set_default_parameters
# File lib/luban/deployment/cli/project.rb, line 106 def set_default_parameters super @passwords = {} @passwords_mutex = Mutex.new end
set_parameters()
click to toggle source
Calls superclass method
Luban::Deployment::Command#set_parameters
# File lib/luban/deployment/cli/project.rb, line 100 def set_parameters super set :stage, self.class.name.split('::').first.snakecase set :project, self.class.name.split('::').last.snakecase end
setup_applications()
click to toggle source
# File lib/luban/deployment/cli/project.rb, line 132 def setup_applications @apps = {} applications.map(&:to_sym).each do |app| if application_initialized?(app) @apps[app] = command(app, base: application_base_class(app)) end end end
setup_cli()
click to toggle source
Calls superclass method
Luban::Deployment::Command#setup_cli
# File lib/luban/deployment/cli/project.rb, line 122 def setup_cli setup_applications setup_init_application super end
setup_descriptions()
click to toggle source
# File lib/luban/deployment/cli/project.rb, line 128 def setup_descriptions desc "Manage apps in #{display_name}" end
setup_init_application()
click to toggle source
# File lib/luban/deployment/cli/project.rb, line 141 def setup_init_application command :init do desc 'Initialize a Luban deployment application' argument :application, 'Application name', required: true action! :init_application end end