Class: Ocak::LocalMergeManager

Inherits:
Object
  • Object
show all
Defined in:
lib/ocak/local_merge_manager.rb

Instance Method Summary collapse

Constructor Details

#initialize(config:, logger:, issues:, **_opts) ⇒ LocalMergeManager

Returns a new instance of LocalMergeManager.



9
10
11
12
13
# File 'lib/ocak/local_merge_manager.rb', line 9

def initialize(config:, logger:, issues:, **_opts)
  @config = config
  @logger = logger
  @issues = issues
end

Instance Method Details

#create_pr_only(issue_number, _worktree) ⇒ Object



40
41
42
43
# File 'lib/ocak/local_merge_manager.rb', line 40

def create_pr_only(issue_number, _worktree)
  @logger.warn("manual_review is not supported in fully local mode for issue ##{issue_number}")
  nil
end

#merge(issue_number, worktree) ⇒ Object



15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
# File 'lib/ocak/local_merge_manager.rb', line 15

def merge(issue_number, worktree)
  @logger.info("Starting local 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 merge_to_main(worktree)
    @logger.error("Merge to main failed for issue ##{issue_number}")
    return false
  end

  delete_branch(worktree.branch)
  @logger.info("Issue ##{issue_number} merged to main (local)")
  true
end