annotate_gem 0.0.8 → 0.0.10
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 +4 -4
- data/.travis.yml +14 -0
- data/README.md +10 -7
- data/Rakefile +2 -0
- data/annotate_gem.gemspec +1 -1
- data/bin/annotate-gem +8 -0
- data/lib/annotate_gem/spec_finder.rb +30 -5
- data/lib/annotate_gem/version.rb +1 -1
- data/test/annotate_gem/spec_finder_test.rb +3 -7
- metadata +7 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 047f6b2c6f2fb2d56e8fde53ba869c87000697b6
|
4
|
+
data.tar.gz: f98ae9c02b0f80371fca64018519ceb587ed1e39
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: bc0f28fcfa956836ff846c9fcde3fa39fb3d98834a8910aabdc1c3c140895cc1b0acb105b8fc9ed25cd49c414dabd4dd56501135c966ba732267f1a16511a661
|
7
|
+
data.tar.gz: dda56b77cfe1b700581bb1be90e94e733fd1845c3d4c5c38be965decdda5d3932a4ef1eaee2c7e9b3961a5733a4e72289f7a36abe60f683599a693447f325db6
|
data/.travis.yml
ADDED
@@ -0,0 +1,14 @@
|
|
1
|
+
language: ruby
|
2
|
+
before_install: gem install bundler -v $BUNDLER_VERSION
|
3
|
+
install: bundle _${BUNDLER_VERSION}_ install --jobs=3 --retry=3
|
4
|
+
script: bundle _${BUNDLER_VERSION}_ exec rake test
|
5
|
+
matrix:
|
6
|
+
include:
|
7
|
+
- rvm: 2.2
|
8
|
+
env: BUNDLER_VERSION=1.12.1
|
9
|
+
- rvm: 2.2
|
10
|
+
env: BUNDLER_VERSION=1.5.3
|
11
|
+
- rvm: 1.9
|
12
|
+
env: BUNDLER_VERSION=1.12.1
|
13
|
+
- rvm: 1.9
|
14
|
+
env: BUNDLER_VERSION=1.5.3
|
data/README.md
CHANGED
@@ -1,6 +1,9 @@
|
|
1
|
+
[](https://travis-ci.org/ivantsepp/annotate_gem)
|
2
|
+
[](https://badge.fury.io/rb/annotate_gem)
|
3
|
+
|
1
4
|
# AnnotateGem
|
2
5
|
|
3
|
-
`
|
6
|
+
`annotate-gem` is command line tool that will add useful comments to your Gemfile. For each gem, `annotate-gem` will create a comment with the gem's description and the gem's website. For example, a Gemfile containing the following
|
4
7
|
|
5
8
|
```ruby
|
6
9
|
gem "rails"
|
@@ -19,9 +22,9 @@ gem "nokogiri"
|
|
19
22
|
gem "brakeman"
|
20
23
|
```
|
21
24
|
|
22
|
-
The motivation for `
|
25
|
+
The motivation for `annotate-gem` is that developers often open a Gemfile and not know what many of the listed gems are actually for. It's hard to track down which gem is providing which functionality. This is a common problem since many gem names do not reflect the actual feature.
|
23
26
|
|
24
|
-
If you do _not_ want to install the gem, you can also visit <https://
|
27
|
+
If you do _not_ want to install the gem, you can also visit <https://annotate-gem.herokuapp.com/> which is a web interface for `annotate-gem`.
|
25
28
|
|
26
29
|
## Installation
|
27
30
|
|
@@ -31,23 +34,23 @@ $ gem install annotate_gem
|
|
31
34
|
|
32
35
|
## Usage
|
33
36
|
|
34
|
-
Running `
|
37
|
+
Running `annotate-gem` itself will add comments to the current directory's `Gemfile`.
|
35
38
|
|
36
39
|
```
|
37
40
|
$ cat Gemfile
|
38
41
|
source 'https://rubygems.org'
|
39
42
|
gem "pry"
|
40
|
-
$
|
43
|
+
$ annotate-gem
|
41
44
|
$ cat Gemfile
|
42
45
|
source 'https://rubygems.org'
|
43
46
|
# An IRB alternative and runtime developer console (http://pryrepl.org)
|
44
47
|
gem "pry"
|
45
48
|
```
|
46
49
|
|
47
|
-
`
|
50
|
+
`annotate-gem` has several options and you can see them via `annotate-gem -h`. `annotate-gem` also works with specifying a single gem name:
|
48
51
|
|
49
52
|
```
|
50
|
-
$
|
53
|
+
$ annotate-gem aasm
|
51
54
|
State machine mixin for Ruby objects (https://github.com/aasm/aasm)
|
52
55
|
```
|
53
56
|
|
data/Rakefile
CHANGED
data/annotate_gem.gemspec
CHANGED
@@ -21,7 +21,7 @@ Gem::Specification.new do |spec|
|
|
21
21
|
spec.test_files = spec.files.grep(%r{^(test|spec|features)/})
|
22
22
|
spec.require_paths = ["lib"]
|
23
23
|
|
24
|
-
spec.add_runtime_dependency "bundler", "~> 1.
|
24
|
+
spec.add_runtime_dependency "bundler", "~> 1.1"
|
25
25
|
spec.add_development_dependency "rake", "~> 10.0"
|
26
26
|
spec.add_development_dependency "minitest", "~> 5.0"
|
27
27
|
spec.add_development_dependency "mocha", "~> 1.1"
|
data/bin/annotate-gem
ADDED
@@ -21,11 +21,8 @@ module AnnotateGem
|
|
21
21
|
total = gem_lines.length
|
22
22
|
processing = 0
|
23
23
|
yield processing, total if block_given?
|
24
|
-
|
25
|
-
|
26
|
-
fetcher = Bundler::Fetcher.new(remote)
|
27
|
-
dependency_fetcher = fetcher.fetchers.find {|f| Bundler::Fetcher::Dependency === f }
|
28
|
-
versions, _ = dependency_fetcher.dependency_specs(gem_lines.collect(&:name))
|
24
|
+
fetcher = bundler_fetcher
|
25
|
+
versions = get_versions(fetcher, gem_lines.collect(&:name))
|
29
26
|
gem_lines.each do |gem_line|
|
30
27
|
processing += 1
|
31
28
|
yield processing, total if block_given?
|
@@ -39,5 +36,33 @@ module AnnotateGem
|
|
39
36
|
def find_latest_version(versions)
|
40
37
|
versions.sort_by { |v| v[1] }.last[1]
|
41
38
|
end
|
39
|
+
|
40
|
+
private
|
41
|
+
|
42
|
+
# TODO: Support private sources
|
43
|
+
def bundler_fetcher
|
44
|
+
# Bundler versions 1.10.0 moves AnonymizableURI to Source::Rubygems::Remote
|
45
|
+
# See https://github.com/bundler/bundler/pull/3476
|
46
|
+
if defined?(Bundler::Source::Rubygems::Remote)
|
47
|
+
remote = Bundler::Source::Rubygems::Remote.new(Gem.sources.first.uri)
|
48
|
+
else
|
49
|
+
remote = Gem.sources.first.uri
|
50
|
+
end
|
51
|
+
Bundler::Fetcher.new(remote)
|
52
|
+
end
|
53
|
+
|
54
|
+
def get_versions(fetcher, names)
|
55
|
+
# Bundler versions 1.10.0 moves fetchers into separate classes
|
56
|
+
# See https://github.com/bundler/bundler/pull/3518
|
57
|
+
if fetcher.respond_to?(:fetch_dependency_remote_specs, true)
|
58
|
+
versions, _ = fetcher.send(:fetch_dependency_remote_specs, names)
|
59
|
+
else
|
60
|
+
# require 'pry'; binding.pry
|
61
|
+
dependency_fetcher = fetcher.fetchers.find {|f| Bundler::Fetcher::Dependency === f }
|
62
|
+
versions, _ = dependency_fetcher.dependency_specs(names)
|
63
|
+
end
|
64
|
+
versions
|
65
|
+
end
|
66
|
+
|
42
67
|
end
|
43
68
|
end
|
data/lib/annotate_gem/version.rb
CHANGED
@@ -35,12 +35,10 @@ class AnnotateGem::SpecFinderTest < Minitest::Test
|
|
35
35
|
gem_line_2.stubs(name: "2")
|
36
36
|
gem_line_2.expects(:spec=).with(spec_2)
|
37
37
|
|
38
|
-
|
39
|
-
Bundler::Fetcher.any_instance.expects(:fetchers).returns([dependency_fetcher_mock])
|
40
|
-
dependency_fetcher_mock.expects(:dependency_specs).with(["1", "2"]).returns([[
|
38
|
+
AnnotateGem::SpecFinder.expects(:get_versions).with(instance_of(Bundler::Fetcher), ["1", "2"]).returns([
|
41
39
|
["1", Gem::Version.new("1")],
|
42
40
|
["2", Gem::Version.new("1")],
|
43
|
-
]
|
41
|
+
])
|
44
42
|
AnnotateGem::SpecFinder.expects(:find_latest_version).returns(Gem::Version.new("1")).twice
|
45
43
|
Bundler::Fetcher.any_instance.expects(:fetch_spec).with(["1", Gem::Version.new("1")]).returns(spec_1)
|
46
44
|
Bundler::Fetcher.any_instance.expects(:fetch_spec).with(["2", Gem::Version.new("1")]).returns(spec_2)
|
@@ -60,9 +58,7 @@ class AnnotateGem::SpecFinderTest < Minitest::Test
|
|
60
58
|
gem_line_1.stubs(name: "1")
|
61
59
|
gem_line_1.expects(:spec=).never
|
62
60
|
|
63
|
-
|
64
|
-
Bundler::Fetcher.any_instance.expects(:fetchers).returns([dependency_fetcher_mock])
|
65
|
-
dependency_fetcher_mock.expects(:dependency_specs).with(["1"]).returns([[], "dependencies here"])
|
61
|
+
AnnotateGem::SpecFinder.expects(:get_versions).with(instance_of(Bundler::Fetcher), ["1"]).returns([])
|
66
62
|
Bundler::Fetcher.any_instance.expects(:fetch_spec).never
|
67
63
|
AnnotateGem::SpecFinder.fetch_specs_for([gem_line_1])
|
68
64
|
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: annotate_gem
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.10
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Ivan Tse
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-05-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -16,14 +16,14 @@ dependencies:
|
|
16
16
|
requirements:
|
17
17
|
- - "~>"
|
18
18
|
- !ruby/object:Gem::Version
|
19
|
-
version: 1.
|
19
|
+
version: '1.1'
|
20
20
|
type: :runtime
|
21
21
|
prerelease: false
|
22
22
|
version_requirements: !ruby/object:Gem::Requirement
|
23
23
|
requirements:
|
24
24
|
- - "~>"
|
25
25
|
- !ruby/object:Gem::Version
|
26
|
-
version: 1.
|
26
|
+
version: '1.1'
|
27
27
|
- !ruby/object:Gem::Dependency
|
28
28
|
name: rake
|
29
29
|
requirement: !ruby/object:Gem::Requirement
|
@@ -71,16 +71,19 @@ description: 'Clarify your dependencies by adding a detailed comment to each lin
|
|
71
71
|
email:
|
72
72
|
- ivan.tse1@gmail.com
|
73
73
|
executables:
|
74
|
+
- annotate-gem
|
74
75
|
- annotate_gem
|
75
76
|
extensions: []
|
76
77
|
extra_rdoc_files: []
|
77
78
|
files:
|
78
79
|
- ".gitignore"
|
80
|
+
- ".travis.yml"
|
79
81
|
- Gemfile
|
80
82
|
- LICENSE.txt
|
81
83
|
- README.md
|
82
84
|
- Rakefile
|
83
85
|
- annotate_gem.gemspec
|
86
|
+
- bin/annotate-gem
|
84
87
|
- bin/annotate_gem
|
85
88
|
- lib/annotate_gem.rb
|
86
89
|
- lib/annotate_gem/cli.rb
|