Class: Mamiya::Agent::Tasks::Switch
- Inherits:
-
Notifyable
- Object
- Abstract
- Notifyable
- Mamiya::Agent::Tasks::Switch
- Defined in:
- lib/mamiya/agent/tasks/switch.rb
Defined Under Namespace
Classes: PrereleaseMissing
Instance Attribute Summary
Attributes inherited from Abstract
#agent, #error, #logger, #task, #task_queue
Instance Method Summary collapse
Methods inherited from Abstract
#after, #before, #errored, identifier, #initialize, #raise_error?, #task_id
Constructor Details
This class inherits a constructor from Mamiya::Agent::Tasks::Abstract
Instance Method Details
#check ⇒ Object
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 |
# File 'lib/mamiya/agent/tasks/switch.rb', line 17 def check return true if ignore_incompletion? && (prerelease_path.exist? || release_path.exist?) return true if prerelease_prepared? return true if release_prepared? unless package_path.exist? new_chain = ['prepare', 'switch'] + (task['_chain'] || []) logger.info "Package not fetched, enqueueing fetch task with #{new_chain.inspect}" task_queue.enqueue( :fetch, task.merge('_chain' => new_chain) ) return false end unless prerelease_prepared? new_chain = ['switch'] + (task['_chain'] || []) logger.info "Package not prepared, enqueueing prepare task with #{new_chain.inspect}" task_queue.enqueue( :prepare, task.merge('_chain' => new_chain) ) return false end true end |
#execute ⇒ Object
12 13 14 15 |
# File 'lib/mamiya/agent/tasks/switch.rb', line 12 def execute return unless check super end |
#run ⇒ Object
45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 |
# File 'lib/mamiya/agent/tasks/switch.rb', line 45 def run case when prerelease_prepared? && release_path.exist? && !release_path.join('.mamiya.prepared').exist? logger.info "Removing existing release (not prepared)" FileUtils.remove_entry_secure release_path when ignore_incompletion? && (prerelease_path.exist? || release_path.exist?) logger.warn "Using incomplete release or prereleases" when !prerelease_prepared? && prerelease_path.exist? && !release_path.join('.mamiya.prepared').exist? # this condition may be a bug logger.error "Existing release is not prepared but prerelease doesn't exist" raise PrereleaseMissing, "Existing release is not prepared but prerelease doesn't exist" end unless release_path.exist? logger.info "Copying #{prerelease_path} -> #{release_path}" FileUtils.cp_r prerelease_path, release_path end logger.info "Switching" switch_step.run! task_queue.enqueue(:clean, {}) end |