Class: CommitCraft::MessageGenerator

Inherits:
Object
  • Object
show all
Defined in:
lib/commitcraft/message_generator.rb

Instance Method Summary collapse

Constructor Details

#initialize(git_client: nil, ai_client: nil) ⇒ MessageGenerator

Returns a new instance of MessageGenerator.



5
6
7
8
9
10
11
12
13
14
15
16
# File 'lib/commitcraft/message_generator.rb', line 5

def initialize(git_client: nil, ai_client: nil)
  @git_client = git_client || GitClient.new
  @config = CommitCraft.configuration

  @ai_client = if ai_client
                 ai_client
               elsif CommitCraft.test_mode?
                 MockAIClient.new
               else
                 AIClient.new
               end
end

Instance Method Details

#commit_with_message(message, amend: false) ⇒ Object



37
38
39
# File 'lib/commitcraft/message_generator.rb', line 37

def commit_with_message(message, amend: false)
  @git_client.commit(message, amend: amend)
end

#generate(options = {}) ⇒ Object



18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
# File 'lib/commitcraft/message_generator.rb', line 18

def generate(options = {})      
  diff = get_diff(options)
  context = build_context(options)
  
  jira_key = options[:jira] || @config.jira_prefix
  
  messages = @ai_client.generate_commit_messages(diff, context)
  
  if jira_key
    messages = messages.map { |msg| format_with_jira(msg, jira_key) }
  end
  
  {
    messages: messages,
    context: context,
    diff_summary: summarize_diff
  }
end