internator 0.1.1 → 0.1.3

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: 52dec5b588f49c5df7245cbc7be52afd763b896d4895d1c95ec0fbaebe8b7cbd
4
- data.tar.gz: 12f361c1894ac73213600cbac49b7ca5caad2c3233b226ad35a1450a83722385
3
+ metadata.gz: 18073f78a16e36078bdb10011feef8ba71f41d77aa9a466ec6fca41f93ed0be4
4
+ data.tar.gz: a08364f38362e1f96d19f81e46425191154aa1f5b50e997006dd04f692eaf1de
5
5
  SHA512:
6
- metadata.gz: c9d054194e165158bbafef506f793201c1befb9a3828c915f5c7c86f2f84c8521f884f586e120aa4bf4b29464fd5363b267c125051698c998a444e6f8238061f
7
- data.tar.gz: fc76c243ff6edb075b13cefedd71fb0fd9e4837fd13eda05efdfe7bd84a5d4da77d63983c0b24d73be29264350d1d2d1d0e3f4de88455fe4093aaf347563a949
6
+ metadata.gz: 44e06263a8eaa9a9f770d12e31a41fbeb093505bb7e11a285e2c5f525561874340d2d3f3d519a49d686add8fe90cb09881a5a1d336249a9474d3e12e74a9fd3d
7
+ data.tar.gz: c8a452eb85370e576aa91b31b48669d091e1cc50fd342e394e07011646eba7a655fe8fe39459594ac269e176c2bef64a7016c36cc0417a34758563dc03fd2f5f
data/README.md CHANGED
@@ -1,3 +1,5 @@
1
+ [![Gem Version](https://badge.fury.io/rb/internator.svg)](https://badge.fury.io/rb/internator)
2
+
1
3
  # Internator
2
4
 
3
5
  Internator is a Ruby-based CLI tool that automates iterative pull request improvements using OpenAI's Codex. It cycles through objectives, makes incremental changes, automatically commits and pushes each update, and optionally waits between iterations.
@@ -29,15 +31,12 @@ Example:
29
31
  ```bash
30
32
  internator "Refactor authentication flow and add tests" 10
31
33
  ```
32
- ## Tmux
33
-
34
- If you use tmux ensure `OPENAI_API_KEY` is forwarded into tmux sessions. Add the following to your `~/.tmux.conf`:
34
+ For more detailed usage tips, see the [Usage Tips wiki page](https://github.com/AlexLarra/internator/wiki/Usage-tips).
35
35
 
36
- ```tmux
37
- # Ensure OPENAI_API_KEY is passed into tmux sessions if you use it.
38
- set -g update-environment "OPENAI_API_KEY"
39
- set-environment -g OPENAI_API_KEY "#{ENV:OPENAI_API_KEY}"
40
- ```
41
36
  ## Contributing
42
37
 
43
38
  Feel free to open issues or submit pull requests.
39
+
40
+ ## License
41
+
42
+ Internator is released under the MIT License. See the [LICENSE](LICENSE) file for details.
data/bin/internator CHANGED
File without changes
data/internator.gemspec CHANGED
@@ -14,4 +14,8 @@ Gem::Specification.new do |spec|
14
14
  spec.files = Dir.glob("lib/**/*.rb") + ["README.md", "LICENSE", "internator.gemspec", "bin/internator"]
15
15
  spec.executables = ["internator"]
16
16
  spec.require_paths = ["lib"]
17
+
18
+ # Development dependencies for building and releasing the gem
19
+ spec.add_development_dependency "bundler", "~> 2.0"
20
+ spec.add_development_dependency "rake"
17
21
  end
@@ -58,8 +58,41 @@ module Internator
58
58
  end
59
59
  end
60
60
 
61
+ # Detect the repository's default branch across remotes (e.g., main, master, develop)
62
+ def self.detect_default_base
63
+ remotes = `git remote`.split("\n").reject(&:empty?)
64
+ remotes.unshift('origin') unless remotes.include?('origin')
65
+ remotes.each do |remote|
66
+ # Try to resolve remote HEAD via rev-parse
67
+ ref = `git rev-parse --abbrev-ref #{remote}/HEAD 2>/dev/null`.strip
68
+ return ref unless ref.empty?
69
+ # Fallback to symbolic-ref
70
+ sym = `git symbolic-ref refs/remotes/#{remote}/HEAD 2>/dev/null`.strip
71
+ if sym.start_with?('refs/remotes/')
72
+ return sym.sub('refs/remotes/', '')
73
+ end
74
+ end
75
+ nil
76
+ end
77
+
78
+ # Executes one Codex iteration by diffing against the appropriate base branch
61
79
  def self.codex_cycle(objectives, iteration)
62
- current_diff = `git diff master 2>/dev/null`
80
+ # Determine configured upstream and current branch name
81
+ upstream = `git rev-parse --abbrev-ref --symbolic-full-name @{u} 2>/dev/null`.strip
82
+ current_branch = `git rev-parse --abbrev-ref HEAD`.strip
83
+ # Choose diff base:
84
+ # 1) If upstream is tracking current branch, use remote default branch
85
+ # 2) Else if upstream exists, diff against that
86
+ # 3) Otherwise fallback to remote default branch or master
87
+ if !upstream.empty? && upstream.split('/').last == current_branch
88
+ base = detect_default_base || upstream
89
+ elsif !upstream.empty?
90
+ base = upstream
91
+ else
92
+ base = detect_default_base || 'master'
93
+ end
94
+ # Get the diff against the chosen base
95
+ current_diff = `git diff #{base} 2>/dev/null`
63
96
  current_diff = "No initial changes" if current_diff.strip.empty?
64
97
  prompt = <<~PROMPT
65
98
  Objectives: #{objectives}
@@ -1,3 +1,3 @@
1
1
  module Internator
2
- VERSION = "0.1.1"
2
+ VERSION = "0.1.3"
3
3
  end
metadata CHANGED
@@ -1,15 +1,43 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: internator
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.1
4
+ version: 0.1.3
5
5
  platform: ruby
6
6
  authors:
7
7
  - AlexLarra
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-06-02 00:00:00.000000000 Z
12
- dependencies: []
11
+ date: 2025-06-03 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: bundler
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '2.0'
20
+ type: :development
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '2.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rake
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
13
41
  description: Internator is a Ruby-based CLI tool that automates iterative pull request
14
42
  improvements using OpenAI's Codex. It cycles through objectives, makes incremental
15
43
  changes, automatically commits and pushes each update, and optionally waits between