Class: Docman::Application
Instance Attribute Summary collapse
Attributes inherited from Command
#type
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, options) ⇒ Object
-
#initialize ⇒ Application
constructor
A new instance of Application.
-
#with_rescue ⇒ Object
-
#write_environment(environment) ⇒ Object
-
#write_state(state) ⇒ Object
Methods included from Context
#describe
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
Returns a new instance of Application.
41
42
43
44
45
46
|
# File 'lib/application.rb', line 41
def initialize
@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
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
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 options
@options
end
|
Class Method Details
.bin ⇒ Object
128
129
130
|
# File 'lib/application.rb', line 128
def self.bin
File.join root, 'bin'
end
|
.lib ⇒ Object
132
133
134
|
# File 'lib/application.rb', line 132
def self.lib
File.join root, 'lib'
end
|
.root ⇒ Object
124
125
126
|
# File 'lib/application.rb', line 124
def self.root
Pathname(__FILE__).dirname.parent
end
|
Instance Method Details
#build(deploy_target_name, state, options = false) ⇒ Object
71
72
73
74
75
76
77
78
79
|
# File 'lib/application.rb', line 71
def build(deploy_target_name, state, options = false)
with_rescue do
@options = options
@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, options['tag'])
end
end
|
#deploy(deploy_target_name, name, type, version, options = false) ⇒ Object
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
|
# File 'lib/application.rb', line 81
def deploy(deploy_target_name, name, type, version, options = false)
result = nil
with_rescue do
@options = options
@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)
write_environment @deploy_target['states'][state]
write_state state
result = state
end
end
result
end
|
#execute(action, state, name = nil, tag = nil) ⇒ Object
109
110
111
112
113
114
115
116
117
118
|
# File 'lib/application.rb', line 109
def execute(action, state, name = nil, tag = nil)
params = Marshal.load(Marshal.dump(@deploy_target))
params['state'] = state
params['action'] = action
params['name'] = name
params['tag'] = tag ? tag : state + '-' + Time.now.strftime("%Y-%m-%d-%H-%M-%S")
params['environment'] = @config['environments'][@deploy_target['states'][state]]
params['environment_name'] = @deploy_target['states'][state]
Docman::Deployers::Deployer.create(params, nil, self).perform
end
|
#force? ⇒ Boolean
120
121
122
|
# File 'lib/application.rb', line 120
def force?
@force or @options[:force]
end
|
#init(name, repo, options) ⇒ Object
48
49
50
51
52
53
54
55
|
# File 'lib/application.rb', line 48
def init(name, repo, options)
branch = options['branch'] ? options['branch'] : 'master'
`mkdir #{name}`
Dir.chdir name
GitUtil.clone_repo(repo, 'config', 'branch', branch, true, 1)
end
|
#with_rescue ⇒ Object
57
58
59
60
61
62
63
64
65
66
67
68
69
|
# File 'lib/application.rb', line 57
def with_rescue
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
yield
rescue Exception => e
log "Operation failed: #{e.message}", 'error'
File.open(failed_filepath, 'w') {|f| f.write('Failed!') }
raise e
end
|
#write_environment(environment) ⇒ Object
104
105
106
107
|
# File 'lib/application.rb', line 104
def write_environment(environment)
filepath = File.join(@workspace_dir, 'last_deploy.properties')
File.open(filepath, 'w') { |file| file.write("ENV=#{environment}") }
end
|
#write_state(state) ⇒ Object
99
100
101
102
|
# File 'lib/application.rb', line 99
def write_state state
filepath = File.join(@workspace_dir, 'state')
File.open(filepath, 'w') { |file| file.write(state) }
end
|