Class: Ai::Commit::Config

Inherits:
Object
  • Object
show all
Defined in:
lib/ai/commit/config.rb

Constant Summary collapse

CONFIG_FILE =
File.expand_path('~/.smart-commit/config.yml').freeze
PROMPTS_FILE =
'.commit-prompts'.freeze

Class Method Summary collapse

Class Method Details

.api_keyObject



12
13
14
15
# File 'lib/ai/commit/config.rb', line 12

def self.api_key
  config = load_config
  config['api_key'] || ENV['ANTHROPIC_API_KEY']
end

.api_key_configured?Boolean

Returns:

  • (Boolean)


23
24
25
# File 'lib/ai/commit/config.rb', line 23

def self.api_key_configured?
  !api_key.nil? && !api_key.empty?
end

.custom_promptsObject



27
28
29
30
31
32
33
34
35
# File 'lib/ai/commit/config.rb', line 27

def self.custom_prompts
  prompts_file = find_prompts_file
  return [] unless prompts_file && File.exist?(prompts_file)
  
  File.readlines(prompts_file)
      .map(&:strip)
      .reject(&:empty?)
      .reject { |line| line.start_with?('#') }
end

.find_prompts_fileObject



37
38
39
40
41
42
43
44
45
46
# File 'lib/ai/commit/config.rb', line 37

def self.find_prompts_file
  # Look for .commit-prompts in current directory or parent directories
  current_dir = Dir.pwd
  while current_dir != File.dirname(current_dir)
    prompts_file = File.join(current_dir, PROMPTS_FILE)
    return prompts_file if File.exist?(prompts_file)
    current_dir = File.dirname(current_dir)
  end
  nil
end

.has_custom_prompts?Boolean

Returns:

  • (Boolean)


48
49
50
# File 'lib/ai/commit/config.rb', line 48

def self.has_custom_prompts?
  !custom_prompts.empty?
end

.set_api_key(key) ⇒ Object



17
18
19
20
21
# File 'lib/ai/commit/config.rb', line 17

def self.set_api_key(key)
  config = load_config
  config['api_key'] = key
  save_config(config)
end