Class: Ocak::RereadyProcessor

Inherits:
Object
  • Object
show all
Includes:
CommandRunner
Defined in:
lib/ocak/reready_processor.rb

Instance Method Summary collapse

Constructor Details

#initialize(config:, logger:, claude:, issues:, watch: nil) ⇒ RereadyProcessor

Returns a new instance of RereadyProcessor.



12
13
14
15
16
17
18
# File 'lib/ocak/reready_processor.rb', line 12

def initialize(config:, logger:, claude:, issues:, watch: nil)
  @config = config
  @logger = logger
  @claude = claude
  @issues = issues
  @watch = watch
end

Instance Method Details

#process(pull_request) ⇒ Object

Main entry point. Returns true on success.



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
# File 'lib/ocak/reready_processor.rb', line 21

def process(pull_request)
  pr_number = pull_request['number']
  issue_number = @issues.extract_issue_number_from_pr(pull_request)
  unless issue_number
    @logger.warn("PR ##{pr_number}: could not extract issue number from body")
    return false
  end

  feedback = gather_feedback(pr_number, issue_number)
  return false unless feedback

  branch_name = pull_request['headRefName']
  unless GitUtils.safe_branch_name?(branch_name)
    @logger.error("PR ##{pr_number}: unsafe branch name '#{branch_name}'")
    return false
  end

  unless checkout_pr_branch(branch_name)
    @logger.error("PR ##{pr_number}: failed to checkout branch #{branch_name}")
    cleanup
    return false
  end

  success = run_feedback_loop(feedback)
  handle_result(pr_number, success)
ensure
  cleanup
end