class Luban::Deployment::Runner
Public Instance Methods
config_file()
click to toggle source
# File lib/luban/deployment/runner.rb, line 21 def config_file @config_file ||= work_dir.join(lubanfile) end
default_rc()
click to toggle source
# File lib/luban/deployment/runner.rb, line 10 def default_rc @default_rc ||= { 'luban_roles' => %i(app), 'luban_root_path' => Parameters::General::DefaultLubanRootPath, 'stages' => %w(development staging production), 'author' => { 'name' => 'author name', 'email' => 'author@email.com' }, 'user' => current_user } end
init_project(args:, opts:)
click to toggle source
# File lib/luban/deployment/runner.rb, line 27 def init_project(args:, opts:) if new_project? project args[:project] if project == '.' work_dir Pathname.pwd project work_dir.basename(".deploy").to_s end end singleton_class.send(:include, Luban::Deployment::Helpers::Generator::Project) create_project_skeleton end
lubanfile()
click to toggle source
# File lib/luban/deployment/runner.rb, line 19 def lubanfile; @lubanfile ||= 'Lubanfile.rb'; end
new_project?()
click to toggle source
# File lib/luban/deployment/runner.rb, line 25 def new_project?; !!@new_project; end
Protected Instance Methods
find_applications()
click to toggle source
# File lib/luban/deployment/runner.rb, line 59 def find_applications apps_path.children.select(&:directory?).map(&:basename).map(&:to_s) end
find_lubanfile()
click to toggle source
# File lib/luban/deployment/runner.rb, line 71 def find_lubanfile original = current = Dir.pwd until File.exist?(lubanfile) Dir.chdir('..') return nil if Dir.pwd == current current = Dir.pwd end current ensure Dir.chdir(original) end
load_libraries()
click to toggle source
# File lib/luban/deployment/runner.rb, line 83 def load_libraries require "#{work_dir}/lib/project" end
on_configure()
click to toggle source
Calls superclass method
# File lib/luban/deployment/runner.rb, line 41 def on_configure super if set_work_dir setup_cli_with_projects else setup_cli_without_projects end end
project_base_class()
click to toggle source
# File lib/luban/deployment/runner.rb, line 87 def project_base_class Object.const_get(project.camelcase) end
project_class(stg)
click to toggle source
# File lib/luban/deployment/runner.rb, line 113 def project_class(stg) mod = Object.const_set(stg.camelcase, Module.new) mod.const_set(project.camelcase, Class.new(project_base_class)) end
set_default_common_parameters()
click to toggle source
# File lib/luban/deployment/runner.rb, line 50 def set_default_common_parameters %i(luban_roles luban_root_path stages author user).each { |p| set_default p, rc[p.to_s] } end
set_default_project_parameters()
click to toggle source
# File lib/luban/deployment/runner.rb, line 54 def set_default_project_parameters set_default :applications, find_applications set_default :project, File.basename(work_dir) end
set_work_dir()
click to toggle source
# File lib/luban/deployment/runner.rb, line 63 def set_work_dir project_root = find_lubanfile unless project_root.nil? work_dir Pathname.new(project_root) apps_path work_dir.join('apps') end end
setup_cli_with_projects()
click to toggle source
# File lib/luban/deployment/runner.rb, line 91 def setup_cli_with_projects @new_project = false load_configuration_file(config_file) set_default_common_parameters set_default_project_parameters load_libraries version Luban::Deployment::VERSION desc "Manage the deployment of project #{project.camelcase}" setup_init_project setup_projects end
setup_cli_without_projects()
click to toggle source
# File lib/luban/deployment/runner.rb, line 118 def setup_cli_without_projects @new_project = true set_default_common_parameters version Luban::Deployment::VERSION desc "Framework to manage project deployment" setup_init_project end
setup_init_project()
click to toggle source
# File lib/luban/deployment/runner.rb, line 128 def setup_init_project _self = self command :init do desc 'Initialize a Luban deployment project' if _self.new_project? argument :project, 'Project name', required: true, assure: ->(name) { !name.empty? } end action! :init_project end end
setup_project(stg)
click to toggle source
# File lib/luban/deployment/runner.rb, line 108 def setup_project(stg) stg = stg.to_sym commands[stg] = project_class(stg).new(self, stg) end
setup_projects()
click to toggle source
# File lib/luban/deployment/runner.rb, line 104 def setup_projects stages.each { |stg| setup_project(stg) } end