Class: Ocak::MergeManager
- Inherits:
-
Object
- Object
- Ocak::MergeManager
- Defined in:
- lib/ocak/merge_manager.rb
Instance Method Summary collapse
-
#initialize(config:, claude:, logger:, watch: nil) ⇒ MergeManager
constructor
A new instance of MergeManager.
-
#merge(issue_number, worktree) ⇒ Object
Rebase, test, push, then let the merger agent create PR + merge + close issue.
Constructor Details
#initialize(config:, claude:, logger:, watch: nil) ⇒ MergeManager
Returns a new instance of MergeManager.
8 9 10 11 12 13 |
# File 'lib/ocak/merge_manager.rb', line 8 def initialize(config:, claude:, logger:, watch: nil) @config = config @claude = claude @logger = logger @watch = watch end |
Instance Method Details
#merge(issue_number, worktree) ⇒ Object
Rebase, test, push, then let the merger agent create PR + merge + close issue.
16 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 44 45 46 47 48 49 |
# File 'lib/ocak/merge_manager.rb', line 16 def merge(issue_number, worktree) @logger.info("Starting merge for issue ##{issue_number}") commit_uncommitted_changes(issue_number, worktree) unless rebase_onto_main(worktree) @logger.error("Rebase failed for issue ##{issue_number}") return false end unless verify_tests(worktree) @logger.error("Tests failed after rebase for issue ##{issue_number}") return false end unless push_branch(worktree) @logger.error("Push failed for issue ##{issue_number}") return false end result = @claude.run_agent( 'merger', "Create a PR, merge it, and close issue ##{issue_number}. Branch: #{worktree.branch}", chdir: worktree.path ) if result.success? @logger.info("Issue ##{issue_number} merged successfully") true else @logger.error("Merger agent failed for issue ##{issue_number}") false end end |