Class: Commiti::Flows::BaseFlow

Inherits:
Object
  • Object
show all
Defined in:
lib/flows/base_flow.rb

Direct Known Subclasses

CommitFlow, PrFlow

Instance Method Summary collapse

Constructor Details

#initialize(options:) ⇒ BaseFlow

Returns a new instance of BaseFlow.



6
7
8
9
# File 'lib/flows/base_flow.rb', line 6

def initialize(options:)
  # Merge defaults/config file with CLI options (CLI options win)
  @options = Commiti::ConfigLoader.load.merge(options || {})
end

Instance Method Details

#runObject



11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/flows/base_flow.rb', line 11

def run
  prepare!
  diff = collect_diff
  client = Commiti::GoogleClient.new(config: options)
  selected_model = options[:model]
  context = Commiti::FlowContextBuilder.build(
    flow_type: flow_type,
    diff: diff,
    client: client,
    run_stage: method(:run_stage),
    model: selected_model
  )
  Commiti::MessagePresenter.print_summarization_notice(context[:summarized_result])

  candidates = generate_candidates(
    client: client,
    prompt: context[:prompt],
    diff_metadata: context[:diff_metadata],
    model: selected_model
  )
  message = select_message(candidates)

  maybe_copy_to_clipboard(message)
  finalize(message)
end