annotate_gem 0.0.8 → 0.0.10

Sign up to get free protection for your applications and to get access to all the features.
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