pr_ai_gen 0.1.1 → 0.2.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 11aeababc26896a5f2927d43b756e5b4b74275694fc7fe2f30e954a9823df3b3
4
- data.tar.gz: 49c9e8b0aecf08d2d890cc8a290fc380fff805397c31b535d91ea946c089fc42
3
+ metadata.gz: f4f268ae0b385a4fa49eeceaef9162bb365312e4fdbe0d10e2d7d4f524eeb7ba
4
+ data.tar.gz: af463bc198f734340918e3111218256c8f10ed5d0da04619b3d903d2190f66e4
5
5
  SHA512:
6
- metadata.gz: dc64d53865e5d51f3cf537124995b5f43779973a7094f71c451828a0e8263e44724b1eeb32ddaf1bd93bc542489effc88955da1a54a5d5dd71a77ec16f33e2b1
7
- data.tar.gz: 7e327ab574ef06aa81192a8fe0421d96f5e0c12ea9b2d9c36b238f92bb84cb9136e84c222c169863e0e2abedcf55e16f29223c01e9f761d94e2ee4750e4538c4
6
+ metadata.gz: cc5fe7e238c9ee8277f74568b2e8cc3cba953b4dc4f95d6de559b5da547e93f7a4828e2f1d7a6ca4d73f23be09ece3b42e1df66ef5a9538f2b4bd5e851347d2e
7
+ data.tar.gz: 2c9eb8d5dbd3806a6132521e98f80cd4334c3d3ec879b094eef8fef67f347f8127fb912851b10a8343276ec8a33307319db488f098cc492742e2652e8d1f1133
data/README.md ADDED
@@ -0,0 +1,37 @@
1
+ # pr_ai_gen
2
+
3
+ ## Description
4
+
5
+ pr_ai_gen is a CLI tool that acelerate the process of creating pull requests by Generate the PR description in markdown format.
6
+ It uses OpenAI to generate the content based on the differences between the two git branches beeing merged.
7
+
8
+ ## Installation
9
+
10
+ Install the gem by running:
11
+
12
+ ```bash
13
+ gem install pr_ai_gen
14
+ ```
15
+
16
+ ### Setup
17
+
18
+ ```bash
19
+ pr_ai_gen init
20
+ ```
21
+ The tool will ask you to input the OPENAI_TOKEN to make the ChatGPT calls. If you don't have one, please generate one [here](https://platform.openai.com/api-keys).
22
+ After input the token if you want to change it you can change it in `~/.pr_gem/credentials`.
23
+
24
+ ### Usage
25
+
26
+ When the setup is already done you will be good to use the tool.
27
+
28
+ Commands:
29
+ - `generate <directory_location> <branch>:<target-branch=main>`: Generate the PR description based on diff from the branch and target-branch (default main)
30
+
31
+ ## Development
32
+
33
+ To develop you must:
34
+ 1. make the script in exe directory executable
35
+ `chmod -x ./exe/pr_ai_gen`
36
+ 2. run the script directly as it is the cli tool
37
+ `./exe/pr_ai_gen generate <directory_location> <branch>:<target-branch=main>`
@@ -14,6 +14,7 @@ class PullRequestAIGenerator
14
14
  @diff = nil
15
15
  @pr_content = nil
16
16
  @git_repo = nil
17
+ @config = nil
17
18
  end
18
19
 
19
20
  def init
@@ -28,13 +29,41 @@ class PullRequestAIGenerator
28
29
 
29
30
  if File.exist?(credentials_path)
30
31
  puts 'Credentials file already exists!'
31
- return
32
+ else
33
+ puts 'Please enter your OpenAI API key:'
34
+ openai_token = STDIN.gets.chomp
35
+ File.write(credentials_path, "OPENAI_TOKEN=#{openai_token}\n")
36
+ puts 'Credentials file created successfully!'
37
+ end
38
+
39
+ puts 'Configuring ChatGPT integration'
40
+ puts 'Please choose the OpenAI API model:'
41
+ puts '1. gpt-4-turbo-preview'
42
+ puts '2. gpt-4'
43
+ puts '3. gpt-3.5-turbo'
44
+
45
+ model = nil
46
+ while model.nil?
47
+ case STDIN.gets.chomp
48
+ when '1'
49
+ model = 'gpt-4-turbo-preview'
50
+ when '2'
51
+ model = 'gpt-4'
52
+ when '3'
53
+ model = 'gpt-3.5-turbo'
54
+ else
55
+ puts 'Invalid model! Please choose a valid model:'
56
+ end
32
57
  end
33
58
 
34
- puts 'Please enter your OpenAI API key:'
35
- openai_token = STDIN.gets.chomp
36
- File.write(credentials_path, "OPENAI_TOKEN=#{openai_token}\n")
37
- puts 'Credentials file created successfully!'
59
+ config = {
60
+ openai: {
61
+ model: model,
62
+ max_tokens: 1024
63
+ }
64
+ }
65
+
66
+ File.write(File.join(pr_gem_path, 'config.yml'), config.to_yaml)
38
67
  end
39
68
 
40
69
  def run
@@ -42,6 +71,7 @@ class PullRequestAIGenerator
42
71
  fetch_diff
43
72
  load_template
44
73
  get_openai_token
74
+ get_config
45
75
  generate_pr_content
46
76
  print_content
47
77
  end
@@ -110,6 +140,15 @@ class PullRequestAIGenerator
110
140
  end
111
141
  end
112
142
 
143
+ def get_config
144
+ config_path = File.join(File.expand_path('~/.pr-gem'), 'config.yml')
145
+ if File.exist?(config_path)
146
+ @config = YAML.load_file(config_path)
147
+ else
148
+ raise "Config file not found!"
149
+ end
150
+ end
151
+
113
152
  def get_openai_token
114
153
  credentials_path = File.expand_path('~/.pr-gem/credentials')
115
154
  if File.exist?(credentials_path)
@@ -132,14 +171,14 @@ class PullRequestAIGenerator
132
171
  "Authorization" => "Bearer #{@openai_token}"
133
172
  },
134
173
  body: {
135
- model: "gpt-4-turbo-preview",
174
+ model: @config[:openai][:model],
136
175
  messages: [
137
176
  {
138
177
  role: "user",
139
178
  content: "fill this templete:\n #{@template}\n with the following changes:\n #{@diff.to_s}"
140
179
  },
141
180
  ],
142
- max_tokens: 1024
181
+ max_tokens: @config[:openai][:max_tokens]
143
182
  }.to_json
144
183
  )
145
184
 
data/pr_ai_gen.gemspec CHANGED
@@ -1,6 +1,6 @@
1
1
  Gem::Specification.new do |spec|
2
2
  spec.name = "pr_ai_gen"
3
- spec.version = "0.1.1"
3
+ spec.version = "0.2.0"
4
4
  spec.authors = ["Lucas Stoller"]
5
5
  spec.email = ["l.s.stoller@gmail.com"]
6
6
  spec.summary = "A CLI tool to generate pull requests using OpenAI"
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: pr_ai_gen
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.2.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lucas Stoller
@@ -78,6 +78,7 @@ files:
78
78
  - ".gitignore"
79
79
  - Gemfile
80
80
  - Gemfile.lock
81
+ - README.md
81
82
  - exe/pr_ai_gen
82
83
  - lib/pull_request_ai_generator.rb
83
84
  - pr_ai_gen.gemspec