Class: Docman::Application
- Includes:
- Context, Singleton
- Defined in:
- lib/application.rb
Instance Attribute Summary collapse
-
#config ⇒ Object
readonly
Returns the value of attribute config.
-
#deploy_target ⇒ Object
Returns the value of attribute deploy_target.
-
#docroot_config ⇒ Object
readonly
Returns the value of attribute docroot_config.
-
#force ⇒ Object
Returns the value of attribute force.
-
#options ⇒ Object
Returns the value of attribute options.
Attributes inherited from Command
Class Method Summary collapse
Instance Method Summary collapse
- #build(deploy_target_name, state, options = false) ⇒ Object
- #deploy(deploy_target_name, name, type, version, options = false) ⇒ Object
- #execute(action, state, name = nil, tag = nil) ⇒ Object
- #force? ⇒ Boolean
- #init(name, repo) ⇒ Object
-
#initialize ⇒ Application
constructor
A new instance of Application.
Methods included from Context
Methods included from Logging
#log, logger, #logger, #prefix, #properties_info, #with_logging
Methods inherited from Command
#add_action, #add_actions, create, #describe, #perform, #prefix, register_command, #replace_placeholder, #run_actions, #run_with_hooks
Constructor Details
#initialize ⇒ Application
Returns a new instance of Application.
41 42 43 44 45 46 |
# File 'lib/application.rb', line 41 def initialize # TODO: Define workspace properly @workspace_dir = Dir.pwd @config = Docman::Config.new(File.join(Pathname(__FILE__).dirname.parent, 'config', 'config.yaml')) @force = false end |
Instance Attribute Details
#config ⇒ Object (readonly)
Returns the value of attribute config.
35 36 37 |
# File 'lib/application.rb', line 35 def config @config end |
#deploy_target ⇒ Object
Returns the value of attribute deploy_target.
36 37 38 |
# File 'lib/application.rb', line 36 def deploy_target @deploy_target end |
#docroot_config ⇒ Object (readonly)
Returns the value of attribute docroot_config.
35 36 37 |
# File 'lib/application.rb', line 35 def docroot_config @docroot_config end |
#force ⇒ Object
Returns the value of attribute force.
36 37 38 |
# File 'lib/application.rb', line 36 def force @force end |
#options ⇒ Object
Returns the value of attribute options.
36 37 38 |
# File 'lib/application.rb', line 36 def end |
Class Method Details
.bin ⇒ Object
99 100 101 |
# File 'lib/application.rb', line 99 def self.bin File.join root, 'bin' end |
.lib ⇒ Object
103 104 105 |
# File 'lib/application.rb', line 103 def self.lib File.join root, 'lib' end |
.root ⇒ Object
95 96 97 |
# File 'lib/application.rb', line 95 def self.root Pathname(__FILE__).dirname.parent end |
Instance Method Details
#build(deploy_target_name, state, options = false) ⇒ Object
52 53 54 55 56 57 58 |
# File 'lib/application.rb', line 52 def build(deploy_target_name, state, = false) = @deploy_target = @config['deploy_targets'][deploy_target_name] @deploy_target['name'] = deploy_target_name @docroot_config = DocrootConfig.new(@workspace_dir, deploy_target) execute('build', state, nil, ['tag']) end |
#deploy(deploy_target_name, name, type, version, options = false) ⇒ Object
60 61 62 63 64 65 66 67 68 69 |
# File 'lib/application.rb', line 60 def deploy(deploy_target_name, name, type, version, = false) = @deploy_target = @config['deploy_targets'][deploy_target_name] raise "Wrong deploy target: #{deploy_target_name}" if @deploy_target.nil? @deploy_target['name'] = deploy_target_name @docroot_config = DocrootConfig.new(@workspace_dir, deploy_target) @docroot_config.states_dependin_on(name, version).keys.each do |state| execute('deploy', state, name) end end |
#execute(action, state, name = nil, tag = nil) ⇒ Object
71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 |
# File 'lib/application.rb', line 71 def execute(action, state, name = nil, tag = nil) params = Marshal.load(Marshal.dump(@deploy_target)) failed_filepath = File.join(@workspace_dir, 'failed') if File.file?(failed_filepath) log 'Last operation failed, forced rebuild mode' FileUtils.rm_f failed_filepath @force = true end params['state'] = state params['action'] = action params['name'] = name params['tag'] = tag params['environment'] = @config['environments'][@deploy_target['states'][state]] params['environment_name'] = @deploy_target['states'][state] Docman::Deployers::Deployer.create(params, nil, self).perform rescue Exception => e log "Operation failed: #{e.message}", 'error' File.open(failed_filepath, 'w') {|f| f.write('Failed!') } end |
#force? ⇒ Boolean
91 92 93 |
# File 'lib/application.rb', line 91 def force? @force or [:force] end |
#init(name, repo) ⇒ Object
48 49 50 |
# File 'lib/application.rb', line 48 def init(name, repo) `mkdir #{name} && cd #{name} && git clone #{repo} config` end |