Class: Ace::Overseer::Molecules::WorktreeProvisioner
- Inherits:
-
Object
- Object
- Ace::Overseer::Molecules::WorktreeProvisioner
- Defined in:
- lib/ace/overseer/molecules/worktree_provisioner.rb
Instance Method Summary collapse
-
#initialize(manager: nil) ⇒ WorktreeProvisioner
constructor
A new instance of WorktreeProvisioner.
- #provision(task_ref) ⇒ Object
Constructor Details
#initialize(manager: nil) ⇒ WorktreeProvisioner
Returns a new instance of WorktreeProvisioner.
7 8 9 |
# File 'lib/ace/overseer/molecules/worktree_provisioner.rb', line 7 def initialize(manager: nil) @manager = manager || Ace::Git::Worktree::Organisms::WorktreeManager.new end |
Instance Method Details
#provision(task_ref) ⇒ Object
11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
# File 'lib/ace/overseer/molecules/worktree_provisioner.rb', line 11 def provision(task_ref) task_ref_str = task_ref.to_s switch_result = @manager.switch(task_ref_str) if switch_result[:success] return build_result(switch_result, created: false) if worktree_path_exists?(switch_result[:worktree_path]) return recover_from_stale_worktree(task_ref_str, source: :switch, previous_result: switch_result) end create_result = @manager.create_task(task_ref_str) raise Error, create_result[:error] || "Failed to provision worktree for task #{task_ref}" unless create_result[:success] created = !create_result[:existing] return build_result(create_result, created: created) if worktree_path_exists?(create_result[:worktree_path]) recover_from_stale_worktree(task_ref_str, source: :create_task, previous_result: create_result) end |