gemdiff 2.5.5 → 4.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +30 -8
- data/bin/gemdiff +1 -1
- data/lib/gemdiff.rb +0 -1
- data/lib/gemdiff/bundle_inspector.rb +1 -1
- data/lib/gemdiff/cli.rb +7 -6
- data/lib/gemdiff/gem_updater.rb +2 -2
- data/lib/gemdiff/outdated_gem.rb +11 -5
- data/lib/gemdiff/repo_finder.rb +12 -14
- data/lib/gemdiff/version.rb +1 -1
- metadata +11 -11
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: e111a272d3cfc29dd3af0ce56ed591987bf3b32e96f0aceb9a4072f093a8f9bb
|
4
|
+
data.tar.gz: 5bd138ca9d683ef421254383e3aad597e55040504b0f54649e1da78bfcdd91a2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1b3266162b26eaf306985f60270d445d44454b53d4394d49658275cf6f3d1924af8c3b247beb62945faa781f3ef1477bf6de5494b523b3df5bf35a14eb45b7c7
|
7
|
+
data.tar.gz: 84609af2a57a3d3eef8ad4aaff2fc1af2c234877b4a45e4c2464524eeeb3f5b544dfddebb8a3972479fef50e5e0f852c24125632544277132bb3c9bc1cef222b
|
data/README.md
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
# gemdiff
|
2
2
|
|
3
3
|
[![Gem Version](https://badge.fury.io/rb/gemdiff.svg)](http://rubygems.org/gems/gemdiff)
|
4
|
-
[![Build Status](https://travis-ci.org/teeparham/gemdiff.svg?branch=
|
4
|
+
[![Build Status](https://travis-ci.org/teeparham/gemdiff.svg?branch=main)](https://travis-ci.org/teeparham/gemdiff)
|
5
5
|
|
6
6
|
`gemdiff` is a command-line tool to find source code for ruby gems.
|
7
7
|
It connects gem version management (rubygems + bundler) with source code (GitHub).
|
8
8
|
|
9
|
-
`gemdiff` provides commands to
|
9
|
+
`gemdiff` provides commands to
|
10
10
|
* Find GitHub repositories for gems
|
11
11
|
* Open the compare view for two gem versions
|
12
12
|
* Inspect your bundle and list all the available updates
|
@@ -146,6 +146,15 @@ to run with the `open` command with a URL argument):
|
|
146
146
|
$ gemdiff open pundit
|
147
147
|
```
|
148
148
|
|
149
|
+
You may also use `.` as a shortcut for the current directory name.
|
150
|
+
This is helpful if you would like to quickly open the gem you are developing, for example:
|
151
|
+
|
152
|
+
```sh
|
153
|
+
$ pwd
|
154
|
+
/Users/you/projects/somegem
|
155
|
+
$ gemdiff open .
|
156
|
+
```
|
157
|
+
|
149
158
|
### `gemdiff compare [gem] [version] [version]`
|
150
159
|
|
151
160
|
Open a compare view for an individual outdated gem in your bundle:
|
@@ -166,7 +175,7 @@ $ gemdiff compare pundit 1.0.0 0.3.0
|
|
166
175
|
You can compare a version with a branch name:
|
167
176
|
|
168
177
|
```sh
|
169
|
-
$ gemdiff compare arel 6.0.0
|
178
|
+
$ gemdiff compare arel 6.0.0 main
|
170
179
|
```
|
171
180
|
|
172
181
|
### `gemdiff releases [gem]`
|
@@ -177,12 +186,12 @@ Open the repository's release history page:
|
|
177
186
|
$ gemdiff releases haml
|
178
187
|
```
|
179
188
|
|
180
|
-
### `gemdiff
|
189
|
+
### `gemdiff main [gem]`
|
181
190
|
|
182
|
-
Open the repository's
|
191
|
+
Open the repository's main branch commit history page:
|
183
192
|
|
184
193
|
```sh
|
185
|
-
$ gemdiff
|
194
|
+
$ gemdiff main haml
|
186
195
|
```
|
187
196
|
|
188
197
|
### `gemdiff help`
|
@@ -202,6 +211,19 @@ $ gemdiff f pundit
|
|
202
211
|
https://github.com/varvet/pundit
|
203
212
|
```
|
204
213
|
|
214
|
+
All commands that have a gem name argument can now use "." as an alias for the current directory name.
|
215
|
+
|
216
|
+
For example:
|
217
|
+
|
218
|
+
```sh
|
219
|
+
pwd
|
220
|
+
/Users/you/ruby/somegem
|
221
|
+
gemdiff find .
|
222
|
+
gemdiff open .
|
223
|
+
gemdiff main .
|
224
|
+
gemdiff compare . 1.2.3 main
|
225
|
+
```
|
226
|
+
|
205
227
|
### Authenticated GitHub API requests
|
206
228
|
|
207
229
|
If GitHub returns rate limit errors, you can make authenticated API
|
@@ -223,11 +245,11 @@ releases, submit an issue to the gem maintainer to tag their releases.
|
|
223
245
|
|
224
246
|
3. The versions must be tagged using the standard format of `v1.2.3`. If you find gems that follow
|
225
247
|
a non-standard format (such as `1.2.3`), please open an issue or submit a pull request.
|
226
|
-
See [`lib/gemdiff/outdated_gem.rb`](https://github.com/teeparham/gemdiff/blob/
|
248
|
+
See [`lib/gemdiff/outdated_gem.rb`](https://github.com/teeparham/gemdiff/blob/main/lib/gemdiff/outdated_gem.rb).
|
227
249
|
|
228
250
|
4. Encourage gem maintainers to enter the GitHub repository URL in the `homepage` field of their gemspec
|
229
251
|
or anywhere in the description. If you find exceptions, open an issue or submit a pull request.
|
230
|
-
See [`lib/gemdiff/repo_finder.rb`](https://github.com/teeparham/gemdiff/blob/
|
252
|
+
See [`lib/gemdiff/repo_finder.rb`](https://github.com/teeparham/gemdiff/blob/main/lib/gemdiff/repo_finder.rb).
|
231
253
|
|
232
254
|
### More Info
|
233
255
|
|
data/bin/gemdiff
CHANGED
data/lib/gemdiff.rb
CHANGED
data/lib/gemdiff/cli.rb
CHANGED
@@ -34,9 +34,9 @@ module Gemdiff
|
|
34
34
|
find(gem_name).releases
|
35
35
|
end
|
36
36
|
|
37
|
-
desc "
|
38
|
-
def
|
39
|
-
find(gem_name).
|
37
|
+
desc "main <gem>", "Open the github main branch commits page for a gem"
|
38
|
+
def main(gem_name)
|
39
|
+
find(gem_name).main
|
40
40
|
end
|
41
41
|
|
42
42
|
desc "compare <gem> [<old> <new>]", <<~DESC
|
@@ -102,10 +102,11 @@ module Gemdiff
|
|
102
102
|
return
|
103
103
|
end
|
104
104
|
response = ask("\nCommit? (c to commit, r to reset, else do nothing)")
|
105
|
-
|
105
|
+
case response
|
106
|
+
when "c"
|
106
107
|
gem_updater.commit
|
107
|
-
puts "\n
|
108
|
-
|
108
|
+
puts "\n#{colorize_git_output(gem_updater.show)}"
|
109
|
+
when "r"
|
109
110
|
puts gem_updater.reset
|
110
111
|
end
|
111
112
|
end
|
data/lib/gemdiff/gem_updater.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
module Gemdiff
|
4
4
|
class GemUpdater
|
5
|
-
|
5
|
+
attr_reader :name
|
6
6
|
|
7
7
|
def initialize(name)
|
8
8
|
@name = name
|
@@ -49,7 +49,7 @@ module Gemdiff
|
|
49
49
|
end
|
50
50
|
|
51
51
|
def version(changed_line)
|
52
|
-
changed_line.split("\n").first.split
|
52
|
+
changed_line.split("\n").first.split.last.gsub(/[()]/, "")
|
53
53
|
end
|
54
54
|
|
55
55
|
# example returns:
|
data/lib/gemdiff/outdated_gem.rb
CHANGED
@@ -32,10 +32,10 @@ module Gemdiff
|
|
32
32
|
twilio-ruby
|
33
33
|
].freeze
|
34
34
|
|
35
|
-
|
35
|
+
attr_reader :name, :old_version, :new_version
|
36
36
|
|
37
37
|
def initialize(name, old_version = nil, new_version = nil)
|
38
|
-
@name = name
|
38
|
+
@name = find_name(name)
|
39
39
|
set_versions old_version, new_version
|
40
40
|
end
|
41
41
|
|
@@ -68,7 +68,7 @@ module Gemdiff
|
|
68
68
|
end
|
69
69
|
|
70
70
|
def commits_url
|
71
|
-
clean_url "#{repo}/commits/
|
71
|
+
clean_url "#{repo}/commits/main"
|
72
72
|
end
|
73
73
|
|
74
74
|
def compare_message
|
@@ -79,7 +79,7 @@ module Gemdiff
|
|
79
79
|
clean_url "#{repo}/compare/#{compare_part}"
|
80
80
|
end
|
81
81
|
|
82
|
-
def
|
82
|
+
def main
|
83
83
|
open_url(commits_url) if repo?
|
84
84
|
end
|
85
85
|
|
@@ -97,6 +97,12 @@ module Gemdiff
|
|
97
97
|
|
98
98
|
private
|
99
99
|
|
100
|
+
# When ".", use the name of the current directory
|
101
|
+
def find_name(name)
|
102
|
+
return File.basename(Dir.getwd) if name == "."
|
103
|
+
name
|
104
|
+
end
|
105
|
+
|
100
106
|
def clean_url(url)
|
101
107
|
uri = URI.parse(url)
|
102
108
|
uri.path.gsub! %r{/+}, "/"
|
@@ -131,7 +137,7 @@ module Gemdiff
|
|
131
137
|
# swap versions if needed
|
132
138
|
def old_new(v_old, v_new)
|
133
139
|
return [v_old, v_new] unless v_old && v_new
|
134
|
-
if v_old == "
|
140
|
+
if v_old == "main" || (Gem::Version.new(v_old) > Gem::Version.new(v_new))
|
135
141
|
[v_new, v_old]
|
136
142
|
else
|
137
143
|
[v_old, v_new]
|
data/lib/gemdiff/repo_finder.rb
CHANGED
@@ -102,21 +102,23 @@ module Gemdiff
|
|
102
102
|
if (full_name = REPO_EXCEPTIONS[gem_name.to_sym])
|
103
103
|
return github_repo(full_name)
|
104
104
|
end
|
105
|
-
|
105
|
+
yaml = gemspec(gem_name)
|
106
|
+
return if yaml.to_s.empty?
|
106
107
|
spec = YAML.load(yaml)
|
107
|
-
return
|
108
|
+
return clean_url(spec.homepage) if spec.homepage =~ GITHUB_REPO_REGEX
|
108
109
|
match = spec.description.to_s.match(GITHUB_REPO_REGEX)
|
109
|
-
match &&
|
110
|
+
match && clean_url(match[0])
|
110
111
|
end
|
111
112
|
|
112
|
-
|
113
|
-
|
113
|
+
# return https URL with anchors stripped
|
114
|
+
def clean_url(url)
|
115
|
+
url.sub(/\Ahttp:/, "https:").partition("#").first
|
114
116
|
end
|
115
117
|
|
116
118
|
def search(gem_name)
|
117
119
|
query = "#{gem_name} language:ruby in:name"
|
118
120
|
result = octokit_client.search_repositories(query)
|
119
|
-
return
|
121
|
+
return if result.items.empty?
|
120
122
|
github_repo result.items.first.full_name
|
121
123
|
end
|
122
124
|
|
@@ -133,13 +135,9 @@ module Gemdiff
|
|
133
135
|
end
|
134
136
|
|
135
137
|
def gemspec(name)
|
136
|
-
|
137
|
-
return
|
138
|
-
|
139
|
-
end
|
140
|
-
|
141
|
-
def last_shell_command_success?
|
142
|
-
$CHILD_STATUS.success?
|
138
|
+
yaml = find_local_gemspec(name)
|
139
|
+
return yaml unless yaml.to_s.empty?
|
140
|
+
find_remote_gemspec(name)
|
143
141
|
end
|
144
142
|
|
145
143
|
def find_local_gemspec(name)
|
@@ -147,7 +145,7 @@ module Gemdiff
|
|
147
145
|
end
|
148
146
|
|
149
147
|
def find_remote_gemspec(name)
|
150
|
-
`gem spec -r #{name}`
|
148
|
+
`gem spec -r #{name}`
|
151
149
|
end
|
152
150
|
end
|
153
151
|
end
|
data/lib/gemdiff/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gemdiff
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version:
|
4
|
+
version: 4.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Tee Parham
|
8
|
-
autorequire:
|
8
|
+
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2021-03-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: launchy
|
@@ -44,14 +44,14 @@ dependencies:
|
|
44
44
|
requirements:
|
45
45
|
- - "~>"
|
46
46
|
- !ruby/object:Gem::Version
|
47
|
-
version: '0
|
47
|
+
version: '1.0'
|
48
48
|
type: :runtime
|
49
49
|
prerelease: false
|
50
50
|
version_requirements: !ruby/object:Gem::Requirement
|
51
51
|
requirements:
|
52
52
|
- - "~>"
|
53
53
|
- !ruby/object:Gem::Version
|
54
|
-
version: '0
|
54
|
+
version: '1.0'
|
55
55
|
- !ruby/object:Gem::Dependency
|
56
56
|
name: minitest
|
57
57
|
requirement: !ruby/object:Gem::Requirement
|
@@ -86,14 +86,14 @@ dependencies:
|
|
86
86
|
requirements:
|
87
87
|
- - "~>"
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: '
|
89
|
+
version: '13.0'
|
90
90
|
type: :development
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
94
|
- - "~>"
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version: '
|
96
|
+
version: '13.0'
|
97
97
|
description: Command-line utility to find source repositories for ruby gems, open
|
98
98
|
common GitHub pages, compare gem versions, and simplify gem update workflow in git.
|
99
99
|
email:
|
@@ -118,7 +118,7 @@ homepage: https://github.com/teeparham/gemdiff
|
|
118
118
|
licenses:
|
119
119
|
- MIT
|
120
120
|
metadata: {}
|
121
|
-
post_install_message:
|
121
|
+
post_install_message:
|
122
122
|
rdoc_options: []
|
123
123
|
require_paths:
|
124
124
|
- lib
|
@@ -126,15 +126,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
126
126
|
requirements:
|
127
127
|
- - ">="
|
128
128
|
- !ruby/object:Gem::Version
|
129
|
-
version: 2.
|
129
|
+
version: 2.5.0
|
130
130
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
131
131
|
requirements:
|
132
132
|
- - ">="
|
133
133
|
- !ruby/object:Gem::Version
|
134
134
|
version: '0'
|
135
135
|
requirements: []
|
136
|
-
rubygems_version: 3.
|
137
|
-
signing_key:
|
136
|
+
rubygems_version: 3.2.13
|
137
|
+
signing_key:
|
138
138
|
specification_version: 4
|
139
139
|
summary: Find source repositories for ruby gems. Open, compare, and update outdated
|
140
140
|
gem versions
|