commit_ai 0.2.0 → 0.2.2

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 129b030b1c188414e7b7c6bbdff473433185e1d0a61bab5c4a161598def6280a
4
- data.tar.gz: 0dce0887496b90ed4f8ad9b5c3e1225fa230cc6fe445a0a232c38998503560a6
3
+ metadata.gz: cf636d90172c3a58382dbfda99f0b4cb43daf3256fcad2e39a24a4ed7bcd31ac
4
+ data.tar.gz: 7a12f3d41dcd098fd8328f427c52974b6e231250ca97022309d4c934fbd0feb5
5
5
  SHA512:
6
- metadata.gz: 10fc57e0ec0294f3dbdace2f37a339f728792dbbe69c3af0116e0f93edfc455dcecaa4a59e3cc840711b26894e27f4119152ff0cce56b4e55e8ea4993e55dfe2
7
- data.tar.gz: 7ca358b753565846326094d512ab70f4293e18d3c3c37f8c77f33d3b7d6cc473cb43e4a47eb233867f8d70a5fe0812184cba8c91b4ce3bc88b00abc6fb2dfbf7
6
+ metadata.gz: 512eff1fdd7c5b9025c0c87f09b788498723734166cbaaa5a1515c3ca94dfb9fdccc85c46231527f2270c780c56d5bc3581968bb4688f4413a3e77575a0be137
7
+ data.tar.gz: e1a8a1d097b06e8d6bb1e9eed20969c240c249f9a68403a84ca2a177b298656fc7d1d1908847e77ee485da50f321b422afae5881d0d2ec08fe25b22ec28a83f7
data/exe/commit_ai CHANGED
@@ -4,9 +4,10 @@
4
4
  $LOAD_PATH.unshift(File.expand_path('../lib', __dir__))
5
5
 
6
6
  require 'commit_ai'
7
+ require 'colorize'
7
8
 
8
9
  if ENV['OPENAI_ACCESS_TOKEN'].nil?
9
- puts "OPENAI_ACCESS_TOKEN is not set. Please set it in your environment variables."
10
+ puts "OPENAI_ACCESS_TOKEN is not set. Please set it in your environment variables.".colorize(:red)
10
11
  exit
11
12
  end
12
13
 
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module CommitAi
4
- VERSION = "0.2.0"
4
+ VERSION = "0.2.2"
5
5
  end
data/lib/commit_ai.rb CHANGED
@@ -1,8 +1,10 @@
1
1
  require 'openai'
2
+ require 'colorize'
2
3
 
3
4
  class CommitAI
4
5
  def initialize
5
6
  @client = OpenAI::Client.new(access_token: ENV['OPENAI_ACCESS_TOKEN'])
7
+ @enabled_pretext = ENV['COMMIT_AI_ENABLED_PRETEXT'] == '1'
6
8
  end
7
9
 
8
10
  def execute
@@ -10,41 +12,50 @@ class CommitAI
10
12
  diff = `git diff -U10 --staged`
11
13
 
12
14
  if diff.empty?
13
- puts colorize("No changes to commit. No need to proceed.", 31)
15
+ puts "No changes to commit. No need to proceed.".colorize(:red)
14
16
  return
15
17
  end
16
18
 
17
- puts colorize("Please provide a brief description of the change made (optional):", 36)
19
+ if @enabled_pretext
20
+ puts "Please provide a pretext for the commit message (optional):".colorize(:cyan)
21
+ pretext = STDIN.gets.chomp
22
+ end
23
+
24
+ puts "Please provide a brief description of the change made (optional):".colorize(:cyan)
18
25
  user_description = STDIN.gets.chomp
19
26
 
20
- puts colorize("Do you want a multi-line commit message? (y/n) (optional):", 36)
27
+ puts "Do you want a multi-line commit message? (y/n) (optional):".colorize(:cyan)
21
28
  message_style_input = STDIN.gets.chomp.downcase
22
29
  message_style = message_style_input == 'y' ? 'multi' : 'single'
23
30
 
24
31
  commit_message = generate_commit_message(diff, message_style, user_description)
25
32
  loop do
26
- puts colorize("\nGenerated Commit Message:\n#{commit_message}", 32)
33
+ if @enabled_pretext
34
+ puts "\nGenerated Commit Message:\n#{pretext}: #{commit_message}".colorize(:green)
35
+ else
36
+ puts "\nGenerated Commit Message:\n#{commit_message}".colorize(:green)
37
+ end
27
38
  puts ""
28
- puts colorize("Do you want to proceed with the commit? (y/n), regenerate (r), or edit (e):", 36)
39
+ puts "Do you want to proceed with the commit? (y/n), regenerate (r), or edit (e):".colorize(:cyan)
29
40
  response = STDIN.gets.chomp
30
41
  case response.downcase
31
42
  when 'y'
32
- system("git commit -m '#{commit_message}'")
33
- puts colorize("Commit successful!", 32)
43
+ system(@enabled_pretext ? "git commit -m '#{pretext}: #{commit_message}'" : "git commit -m '#{commit_message}'")
44
+ puts "Commit successful!".colorize(:green)
34
45
  break
35
46
  when 'r'
36
47
  commit_message = generate_commit_message(diff, message_style, user_description)
37
- puts colorize("Regenerating commit message...", 33)
48
+ puts "Regenerating commit message...".colorize(:yellow)
38
49
  next
39
50
  when 'e'
40
51
  system("git commit -m '#{commit_message}' -e")
41
- puts colorize("Commit successful after editing!", 32)
52
+ puts "Commit successful after editing!".colorize(:green)
42
53
  break
43
54
  when 'n'
44
- puts colorize("Commit aborted. No changes committed.", 31)
55
+ puts "Commit aborted. No changes committed.".colorize(:red)
45
56
  break
46
57
  else
47
- puts colorize("Invalid input. Please try again.", 31)
58
+ puts "Invalid input. Please try again.".colorize(:red)
48
59
  puts ""
49
60
  next
50
61
  end
@@ -116,8 +127,4 @@ class CommitAI
116
127
 
117
128
  minified_diff.join
118
129
  end
119
-
120
- def colorize(text, color_code)
121
- "\e[#{color_code}m#{text}\e[0m"
122
- end
123
130
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: commit_ai
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.2.0
4
+ version: 0.2.2
5
5
  platform: ruby
6
6
  authors:
7
7
  - Ken Vitug
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2024-10-05 00:00:00.000000000 Z
11
+ date: 2024-11-04 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: ruby-openai
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - ">="
25
25
  - !ruby/object:Gem::Version
26
26
  version: '0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: colorize
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
27
41
  description: Commit AI automates the generation of insightful single-line and multi-line
28
42
  commit messages by analyzing staged git diffs with OpenAI's advanced language models.
29
43
  It allows users to provide optional change descriptions for better context, and