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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 7e0ee9922534ca6c7e763fd617f8e81a461ff4e1
4
- data.tar.gz: d60f74fff3ca5131bd5beacbc7729435a973ab01
3
+ metadata.gz: 047f6b2c6f2fb2d56e8fde53ba869c87000697b6
4
+ data.tar.gz: f98ae9c02b0f80371fca64018519ceb587ed1e39
5
5
  SHA512:
6
- metadata.gz: 3323eb1ba24e40ca46fb3f75c4ccb72ead72c4c9279fcebe841ee24b7de4eb51af7aa0fd3dd162d2367da6f6e3ea74aabb5c2748bf41cecff5e8d3a92b2c166c
7
- data.tar.gz: cbb7b96c3789ff8123299bc315742c727521b1f9eee40abf53c9f3078a4b1033b3ca19e9ae16e9820093cb8fc901c3694448bea26207293df302dc830c9a40ad
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
+ [![Build Status](https://travis-ci.org/ivantsepp/annotate_gem.svg?branch=master)](https://travis-ci.org/ivantsepp/annotate_gem)
2
+ [![Gem Version](https://badge.fury.io/rb/annotate_gem.svg)](https://badge.fury.io/rb/annotate_gem)
3
+
1
4
  # AnnotateGem
2
5
 
3
- `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
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 `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.
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://annotate_gem.herokuapp.com/> which is a web interface for `annotate_gem`.
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 `annotate_gem` itself will add comments to the current directory's `Gemfile`.
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
- $ annotate_gem
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
- `annotate_gem` has several options and you can see them via `annotate_gem -h`. `annotate_gem` also works with specifying a single gem name:
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
- $ annotate_gem aasm
53
+ $ annotate-gem aasm
51
54
  State machine mixin for Ruby objects (https://github.com/aasm/aasm)
52
55
  ```
53
56
 
data/Rakefile CHANGED
@@ -6,3 +6,5 @@ Rake::TestTask.new do |t|
6
6
  t.test_files = FileList['test/**/*test.rb']
7
7
  t.verbose = true
8
8
  end
9
+
10
+ task :default => :test
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.11.2"
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
@@ -0,0 +1,8 @@
1
+ #!/usr/bin/env ruby
2
+
3
+ $:.unshift(File.join(File.dirname(__FILE__), "../lib"))
4
+
5
+ require "annotate_gem/cli"
6
+ require "annotate_gem"
7
+
8
+ AnnotateGem::CLI.new.run(ARGV)
@@ -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
- # TODO: Support private sources
25
- remote = Bundler::Source::Rubygems::Remote.new(Gem.sources.first.uri)
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
@@ -1,4 +1,4 @@
1
1
  module AnnotateGem
2
- VERSION = "0.0.8".freeze
2
+ VERSION = "0.0.10".freeze
3
3
  DESCRIPTION = "Add comments to your Gemfile with each dependency's description.".freeze
4
4
  end
@@ -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
- dependency_fetcher_mock = Bundler::Fetcher::Dependency.new(nil, nil, nil)
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
- ], "dependencies here"])
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
- dependency_fetcher_mock = Bundler::Fetcher::Dependency.new(nil, nil, nil)
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.8
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-04-30 00:00:00.000000000 Z
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.11.2
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.11.2
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