gem-src 0.9.0 → 0.10.0

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
- SHA1:
3
- metadata.gz: 4f3c83dc3c5a18f5ae5811a98878cf4f8425f9ec
4
- data.tar.gz: 9dc52976d13b55dbcc66b243698b195c89307372
2
+ SHA256:
3
+ metadata.gz: 70651b92bbaa9d17a2f084c7e2ff97adf2b40a2ebe4ec00deae616afec1fe995
4
+ data.tar.gz: 5ac36fd408e1b1f96945986c6f4bef28d737b2ef8e0d8b9e66a913c16a76dede
5
5
  SHA512:
6
- metadata.gz: 784ee29ac83834644d22b0e2ac06cb8d482ecab3e74caab90b312dc7f503dd1aebf67001506e973e3121657d3df96a212745d320039df5d52aa0ed4cf270a3d0
7
- data.tar.gz: 210a3f0b03f80eef330601954bc57eb73d87ab9033cb78b19ae83ece781405d60c3ba4e7ebb8ee8769fedb0009ce580e77773188a0f5a138819fb4f27df50f2d
6
+ metadata.gz: 1ac67aa2d4b6f7ac57ffebb80e1ebed510477117dc9e3ce3573d51d9b9b146ab2152dbdf6ad3928220e7ac6d6353808687d1548f6e310a0730def45826ba24e1
7
+ data.tar.gz: 9e2818b0389ab44f3cf537ecfcf85c00adb77d9d59edad7010ca7471aabf411403aeedb97fc4426651e372bcb788b741239f7fb9122603953544397c500ee531
data/README.md CHANGED
@@ -5,7 +5,7 @@ Plus, gem-src runs `git init` on each installed gem, and links it to the cloned
5
5
 
6
6
  ***TL;DR***
7
7
 
8
- % git clone https://github.com/amatsuda/gem-src.git ~/.rbenv/plugins/gem-src
8
+ % git clone https://github.com/amatsuda/gem-src.git "$(rbenv root)/plugins/gem-src"
9
9
  % mkdir ~/src
10
10
  % echo "gemsrc_clone_root: ~/src" >> ~/.gemrc
11
11
 
@@ -14,20 +14,26 @@ Then you're all set!
14
14
 
15
15
  ## Installation
16
16
 
17
- ### As a Rubygem
18
-
19
- gem-src is a gem plugin that can be installed via gem install command:
20
-
21
- % gem install gem-src
22
-
23
17
  ### :star2: As an rbenv plugin (recommended)
24
18
 
25
19
  Alternatively, if you're using rbenv, you can install gem-src as an rbenv plugin:
26
20
 
27
- % git clone https://github.com/amatsuda/gem-src.git ~/.rbenv/plugins/gem-src
21
+ % git clone https://github.com/amatsuda/gem-src.git "$(rbenv root)/plugins/gem-src"
28
22
 
29
23
  then you get gem-src enabled for all `gem` and `bundle` commands invoked through rbenv.
30
24
 
25
+ ### :star2: As a Bundler plugin (experimental, but also recommended)
26
+
27
+ gem-src is a bundler plugin that can be installed via bundler plugin install command:
28
+
29
+ % bundler plugin install gem-src
30
+
31
+ ### As a Rubygem
32
+
33
+ gem-src is a gem plugin that can be installed via gem install command:
34
+
35
+ % gem install gem-src
36
+
31
37
  ## Configuration
32
38
 
33
39
  ### By default
@@ -4,7 +4,7 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
4
4
 
5
5
  Gem::Specification.new do |gem|
6
6
  gem.name = "gem-src"
7
- gem.version = '0.9.0'
7
+ gem.version = '0.10.0'
8
8
  gem.authors = ["Akira Matsuda"]
9
9
  gem.email = ["ronnie@dio.jp"]
10
10
  gem.description = 'Gem.post_install { `git clone gem_source src` }'
@@ -0,0 +1,81 @@
1
+ module Gem
2
+ class Src
3
+ IRREGULAR_REPOSITORIES = {
4
+ 'activesupport' => nil,
5
+ 'actionview' => nil,
6
+ 'actionpack' => nil,
7
+ 'activemodel' => nil,
8
+ 'activerecord' => nil,
9
+ 'activerecord-jdbcmysql-adapter' => 'https://github.com/jruby/activerecord-jdbc-adapter',
10
+ 'activerecord-jdbcpostgresql-adapter' => 'https://github.com/jruby/activerecord-jdbc-adapter',
11
+ 'activerecord-jdbcsqlite3-adapter' => 'https://github.com/jruby/activerecord-jdbc-adapter',
12
+ 'activejob' => nil,
13
+ 'actionmailbox' => nil,
14
+ 'actionmailer' => nil,
15
+ 'actioncable' => nil,
16
+ 'actiontext' => nil,
17
+ 'activestorage' => nil,
18
+ 'railties' => nil,
19
+ 'activeresource' => 'https://github.com/rails/activeresource.git',
20
+ 'autoparse' => 'https://github.com/google/autoparse.git',
21
+ 'aws-sdk-rails' => 'https://github.com/aws/aws-sdk-rails.git',
22
+ 'breadcrumbs_on_rails' => 'https://github.com/weppos/breadcrumbs_on_rails',
23
+ 'bson' => 'https://github.com/mongodb/bson-ruby.git',
24
+ 'coffee-script-source' => 'https://github.com/rails/ruby-coffee-script',
25
+ 'compass-core' => 'https://github.com/Compass/compass.git',
26
+ 'compass-import-once' => 'https://github.com/Compass/compass.git',
27
+ 'concurrent-ruby' => 'https://github.com/ruby-concurrency/concurrent-ruby/',
28
+ 'concurrent-ruby-edge' => 'https://github.com/ruby-concurrency/concurrent-ruby/',
29
+ 'concurrent-ruby-ext' => 'https://github.com/ruby-concurrency/concurrent-ruby/',
30
+ 'cool.io' => 'https://github.com/tarcieri/cool.io.git',
31
+ 'cucumber-core' => 'https://github.com/cucumber/cucumber-ruby-core.git',
32
+ 'cucumber-wire' => 'https://github.com/cucumber/cucumber-ruby-wire.git',
33
+ 'diff-lcs' => 'https://github.com/halostatue/diff-lcs.git',
34
+ 'elasticsearch' => 'https://github.com/elastic/elasticsearch-ruby.git',
35
+ 'elasticsearch-api' => 'https://github.com/elastic/elasticsearch-ruby.git',
36
+ 'elasticsearch-extensions' => 'https://github.com/elastic/elasticsearch-ruby.git',
37
+ 'elasticsearch-transport' => 'https://github.com/elastic/elasticsearch-ruby.git',
38
+ 'erubis' => 'https://github.com/kwatch/erubis.git',
39
+ 'flay' => 'https://github.com/seattlerb/flay',
40
+ 'geocoder' => 'https://github.com/alexreisner/geocoder',
41
+ 'hirb' => 'https://github.com/cldwalker/hirb',
42
+ 'houston' => 'https://github.com/nomad/houston',
43
+ 'html2haml' => 'https://github.com/haml/html2haml',
44
+ 'io-console' => 'https://github.com/ruby/io-console',
45
+ 'kaminari-actionview' => nil,
46
+ 'kaminari-activerecord' => nil,
47
+ 'kaminari-core' => nil,
48
+ 'kwalify' => nil,
49
+ 'log4r' => 'https://github.com/colbygk/log4r',
50
+ 'meta_request' => 'https://github.com/dejan/rails_panel',
51
+ 'method_source' => 'https://github.com/banister/method_source',
52
+ 'origin' => 'https://github.com/mongoid/origin',
53
+ 'padrino' => 'https://github.com/padrino/padrino-framework',
54
+ 'padrino-admin' => nil,
55
+ 'padrino-cache' => nil,
56
+ 'padrino-core' => nil,
57
+ 'padrino-gen' => nil,
58
+ 'padrino-helpers' => nil,
59
+ 'padrino-mailer' => nil,
60
+ 'padrino-performance' => nil,
61
+ 'padrino-support' => nil,
62
+ 'paranoia' => 'https://github.com/rubysherpas/paranoia',
63
+ 'pdf-core' => 'https://github.com/prawnpdf/pdf-core',
64
+ 'pg' => nil,
65
+ 'rack-mini-profiler' => 'https://github.com/MiniProfiler/rack-mini-profiler',
66
+ 'raindrops' => 'https://github.com/tmm1/raindrops',
67
+ 'redis-actionpack' => 'https://github.com/redis-store/redis-actionpack',
68
+ 'redis-activesupport' => 'https://github.com/redis-store/redis-activesupport',
69
+ 'redis-rack' => 'https://github.com/redis-store/redis-rack',
70
+ 'redis-rails' => 'https://github.com/redis-store/redis-rails',
71
+ 'rom-mapper' => 'https://github.com/rom-rb/rom-mapper',
72
+ 'rom-repository' => 'https://github.com/rom-rb/rom-repository',
73
+ 'rom-sql' => 'https://github.com/rom-rb/rom-sql',
74
+ 'rouge' => 'https://github.com/jneen/rouge',
75
+ 'rubygems-update' => nil,
76
+ 'spreadsheet' => 'https://github.com/zdavatz/spreadsheet',
77
+ 'thin' => 'https://github.com/macournoyer/thin',
78
+ 'uniform_notifier' => 'https://github.com/flyerhzm/uniform_notifier'
79
+ }.freeze unless defined? IRREGULAR_REPOSITORIES
80
+ end
81
+ end
@@ -5,35 +5,46 @@ require 'net/https'
5
5
 
6
6
  module Gem
7
7
  class Src
8
- IRREGULAR_REPOSITORIES = {'activesupport' => nil, 'actionview' => nil, 'actionpack' => nil, 'activemodel' => nil, 'activerecord' => nil, 'activejob' => nil, 'actionmailer' => nil, 'actioncable' => nil, 'railties' => nil, 'activeresource' => 'https://github.com/rails/activeresource.git', 'autoparse' => 'https://github.com/google/autoparse.git', 'aws-sdk-rails' => 'https://github.com/aws/aws-sdk-rails.git', 'bson' => 'https://github.com/mongodb/bson-ruby.git', 'compass-core' => 'https://github.com/Compass/compass.git', 'compass-import-once' => 'https://github.com/Compass/compass.git', 'cool.io' => 'https://github.com/tarcieri/cool.io.git', 'cucumber-core' => 'https://github.com/cucumber/cucumber-ruby-core.git', 'cucumber-wire' => 'https://github.com/cucumber/cucumber-ruby-wire.git', 'diff-lcs' => 'https://github.com/halostatue/diff-lcs.git', 'elasticsearch-api' => 'https://github.com/elastic/elasticsearch-ruby.git', 'elasticsearch-transport' => 'https://github.com/elastic/elasticsearch-ruby.git', 'erubis' => 'https://github.com/kwatch/erubis.git', 'geocoder' => 'https://github.com/alexreisner/geocoder', 'hirb' => 'https://github.com/cldwalker/hirb', 'html2haml' => 'https://github.com/haml/html2haml', 'io-console' => nil, 'kaminari-actionview' => nil, 'kaminari-activerecord' => nil, 'kaminari-core' => nil, 'meta_request' => 'https://github.com/dejan/rails_panel', 'method_source' => 'https://github.com/banister/method_source', 'origin' => 'https://github.com/mongoid/origin', 'padrino' => 'https://github.com/padrino/padrino-framework', 'padrino-admin' => nil, 'padrino-cache' => nil, 'padrino-core' => nil, 'padrino-gen' => nil, 'padrino-helpers' => nil, 'padrino-mailer' => nil, 'padrino-performance' => nil, 'padrino-support' => nil, 'paranoia' => 'https://github.com/rubysherpas/paranoia', 'pdf-core' => 'https://github.com/prawnpdf/pdf-core', 'pg' => nil, 'rack-mini-profiler' => 'https://github.com/MiniProfiler/rack-mini-profiler', 'raindrops' => 'https://github.com/tmm1/raindrops', 'redis-actionpack' => 'https://github.com/redis-store/redis-actionpack', 'redis-activesupport' => 'https://github.com/redis-store/redis-activesupport', 'redis-rack' => 'https://github.com/redis-store/redis-rack', 'redis-rails' => 'https://github.com/redis-store/redis-rails', 'rouge' => 'https://github.com/jneen/rouge', 'spreadsheet' => 'https://github.com/zdavatz/spreadsheet', 'thin' => 'https://github.com/macournoyer/thin', 'uniform_notifier' => 'https://github.com/flyerhzm/uniform_notifier'}.freeze
8
+ class << self
9
+ def post_install_hook(installer)
10
+ return true if installer.class.name == 'Bundler::Source::Path::Installer'
11
+ return true if !!ENV['GEMSRC_SKIP']
9
12
 
10
- attr_reader :installer
13
+ gem_src = Gem::Src.new installer
14
+ gem_src.git_clone_homepage_or_source_code_uri_or_homepage_uri_or_github_organization_uri
15
+
16
+ gem_src.repositorize_installed_gem
17
+
18
+ gem_src.remote_add_src_and_origin
19
+ true
20
+ end
21
+ end
11
22
 
12
23
  def initialize(installer)
13
- @installer, @tested_repositories = installer, []
24
+ @installer, @spec, @tested_repositories = installer, installer.spec, []
14
25
  end
15
26
 
16
27
  # Guess the git repo from the gemspec and perform git clone
17
28
  def git_clone_homepage_or_source_code_uri_or_homepage_uri_or_github_organization_uri
18
- return false if skip_clone?
19
29
  return false if File.exist? clone_dir
20
30
 
21
31
  now = Time.now
22
32
 
23
- if IRREGULAR_REPOSITORIES.key? installer.spec.name
24
- return git_clone IRREGULAR_REPOSITORIES[installer.spec.name]
33
+ if IRREGULAR_REPOSITORIES.key? @spec.name
34
+ return git_clone IRREGULAR_REPOSITORIES[@spec.name]
25
35
  end
26
36
 
27
- result = git_clone(installer.spec.homepage) ||
28
- git_clone(github_url(installer.spec.homepage)) ||
37
+ result = git_clone(source_code_uri_from_metadata) ||
38
+ git_clone(@spec.homepage) ||
39
+ git_clone(github_url(@spec.homepage)) ||
29
40
  git_clone(source_code_uri) ||
30
41
  git_clone(homepage_uri) ||
31
42
  git_clone(github_url(homepage_uri)) ||
32
- git_clone(github_organization_uri(installer.spec.name))
43
+ git_clone(github_organization_uri(@spec.name))
33
44
 
34
45
  if verbose?
35
- puts "gem-src: #{installer.spec.name} - !!! Failed to find a repo." if result.nil?
36
- puts "gem-src: #{installer.spec.name} - #{Time.now - now}s"
46
+ puts "gem-src: #{@spec.name} - !!! Failed to find a repo." if result.nil?
47
+ puts "gem-src: #{@spec.name} - #{Time.now - now}s"
37
48
  end
38
49
  result
39
50
  end
@@ -41,7 +52,7 @@ module Gem
41
52
  # git init the installed gem so that we can directly edit the files there
42
53
  def repositorize_installed_gem
43
54
  if File.directory? gem_dir
44
- puts "gem-src: #{installer.spec.name} - repositorizing..." if verbose?
55
+ puts "gem-src: #{@spec.name} - repositorizing..." if verbose?
45
56
  `cd #{gem_dir} && ! git rev-parse --is-inside-work-tree 2> /dev/null && git init && git checkout -qb gem-src_init && git add -A && git commit -m 'Initial commit by gem-src'`
46
57
  end
47
58
  end
@@ -49,10 +60,10 @@ module Gem
49
60
  # git remote add from the installed gem to the cloned repo so that we can easily transfer patches
50
61
  def remote_add_src_and_origin
51
62
  if File.directory?(clone_dir) && File.directory?(gem_dir)
52
- puts "gem-src: #{installer.spec.name} - adding remotes..." if verbose?
63
+ puts "gem-src: #{@spec.name} - adding remotes..." if verbose?
53
64
  `cd #{gem_dir} && git remote add src #{clone_dir}`
54
65
  origin = `cd #{clone_dir} && git remote get-url origin`.chomp
55
- `cd #{gem_dir} && git remote set-url origin #{origin}` if origin
66
+ `cd #{gem_dir} && git config remote.origin.url #{origin}` if origin
56
67
  end
57
68
  end
58
69
 
@@ -60,17 +71,22 @@ module Gem
60
71
 
61
72
  def clone_dir
62
73
  @clone_dir ||= if ENV['GEMSRC_CLONE_ROOT']
63
- File.expand_path installer.spec.name, ENV['GEMSRC_CLONE_ROOT']
74
+ File.expand_path @spec.name, ENV['GEMSRC_CLONE_ROOT']
64
75
  elsif Gem.configuration[:gemsrc_clone_root]
65
- File.expand_path installer.spec.name, Gem.configuration[:gemsrc_clone_root]
76
+ File.expand_path @spec.name, Gem.configuration[:gemsrc_clone_root]
66
77
  else
67
- gem_dir = installer.respond_to?(:gem_dir) ? installer.gem_dir : File.expand_path(File.join(installer.gem_home, 'gems', installer.spec.full_name))
68
78
  File.join gem_dir, 'src'
69
79
  end
70
80
  end
71
81
 
72
82
  def gem_dir
73
- installer.respond_to?(:gem_dir) ? installer.gem_dir : File.expand_path(File.join(installer.gem_home, 'gems', installer.spec.full_name))
83
+ if @installer.respond_to?(:gem_dir)
84
+ @installer.gem_dir
85
+ elsif @installer.respond_to?(:gem_home) # old rubygems
86
+ File.expand_path(File.join(@installer.gem_home, 'gems', @spec.full_name))
87
+ else # bundler
88
+ File.expand_path(File.join(Gem.dir, 'gems', @spec.full_name))
89
+ end
74
90
  end
75
91
 
76
92
  def github_url(url)
@@ -99,9 +115,13 @@ module Gem
99
115
  Net::HTTP.new('github.com', 443).tap {|h| h.use_ssl = true }.request_head(url).code != '404'
100
116
  end
101
117
 
118
+ def source_code_uri_from_metadata
119
+ @spec.metadata['source_code_uri']
120
+ end
121
+
102
122
  def api
103
123
  require 'open-uri'
104
- @api ||= open("https://rubygems.org/api/v1/gems/#{installer.spec.name}.yaml", &:read)
124
+ @api ||= OpenURI.open_uri("https://rubygems.org/api/v1/gems/#{@spec.name}.yaml", &:read)
105
125
  rescue OpenURI::HTTPError
106
126
  ""
107
127
  end
@@ -120,11 +140,12 @@ module Gem
120
140
 
121
141
  def git_clone(repository)
122
142
  return if repository.nil? || repository.empty?
143
+ return if repository.include? 'rubyforge.org'
123
144
  return if @tested_repositories.include? repository
124
145
  @tested_repositories << repository
125
146
  return if github?(repository) && !github_page_exists?(repository)
126
147
 
127
- puts "gem-src: #{installer.spec.name} - Cloning from #{repository}..." if verbose?
148
+ puts "gem-src: #{@spec.name} - Cloning from #{repository}..." if verbose?
128
149
 
129
150
  if use_ghq?
130
151
  system 'ghq', 'get', repository
@@ -142,25 +163,15 @@ module Gem
142
163
  uri =~ /\A(?:https?|git):\/\// ? uri : nil
143
164
  end
144
165
 
145
- def skip_clone?
146
- !!ENV['GEMSRC_SKIP']
147
- end
148
-
149
166
  def verbose?
150
167
  !!ENV['GEMSRC_VERBOSE'] || Gem.configuration[:gemsrc_verbose]
151
168
  end
152
- end
169
+ end unless defined?(Src) # for rubygems test suite.
153
170
  end
154
171
 
172
+ require 'gem/src/irregular_repositories'
155
173
 
156
- Gem.post_install do |installer|
157
- next true if installer.class.name == 'Bundler::Source::Path::Installer'
158
-
159
- gem_src = Gem::Src.new installer
160
- gem_src.git_clone_homepage_or_source_code_uri_or_homepage_uri_or_github_organization_uri
161
-
162
- gem_src.repositorize_installed_gem
163
174
 
164
- gem_src.remote_add_src_and_origin
165
- true
175
+ Gem.post_install do |installer|
176
+ Gem::Src.post_install_hook installer
166
177
  end
@@ -0,0 +1,7 @@
1
+ # frozen-string-literal: true
2
+
3
+ Bundler::Plugin::API.hook Bundler::Plugin::Events::GEM_AFTER_INSTALL do |spec_install|
4
+ require_relative 'lib/rubygems_plugin'
5
+
6
+ Gem::Src.post_install_hook spec_install
7
+ end
@@ -0,0 +1,71 @@
1
+ require 'spec_helper'
2
+
3
+ describe Gem::Src do
4
+ def quick_gem(name, version='2')
5
+ require 'rubygems/specification'
6
+
7
+ spec = Gem::Specification.new do |s|
8
+ s.platform = Gem::Platform::RUBY
9
+ s.name = name
10
+ s.version = version
11
+ s.author = 'A User'
12
+ s.email = 'example@example.com'
13
+ s.homepage = 'http://example.com'
14
+ s.summary = "this is a summary"
15
+ s.description = "This is a test description"
16
+
17
+ yield(s) if block_given?
18
+ end
19
+
20
+ Gem::Specification.map # HACK: force specs to (re-)load before we write
21
+
22
+ written_path = write_file spec.spec_file do |io|
23
+ io.write spec.to_ruby_for_cache
24
+ end
25
+
26
+ spec.loaded_from = spec.loaded_from = written_path
27
+
28
+ Gem::Specification.add_spec spec.for_cache
29
+
30
+ spec
31
+ end
32
+
33
+ describe '#clone_dir' do
34
+ subject do
35
+ gem = quick_gem 'my_awesome_gem'
36
+ installer = Gem::Installer.new gem
37
+ installer.stub(:gem_dir, '~/g/my_awesome_gem')
38
+ Gem::Src.new installer
39
+ end
40
+ context "with ENV['GEMSRC_CLONE_ROOT']" do
41
+ around do |example|
42
+ e, g = ENV['GEMSRC_CLONE_ROOT'], Gem.configuration[:gemsrc_clone_root]
43
+ ENV['GEMSRC_CLONE_ROOT'], Gem.configuration[:gemsrc_clone_root] = '~/foo', nil
44
+ example.run
45
+ ENV['GEMSRC_CLONE_ROOT'], Gem.configuration[:gemsrc_clone_root] = e, g
46
+ end
47
+ its(:clone_dir) { should == '~/foo/my_awesome_gem' }
48
+ end
49
+
50
+ context "with Gem.configuration[:gemsrc_clone_root]" do
51
+ around do |example|
52
+ e, g = ENV['GEMSRC_CLONE_ROOT'], Gem.configuration[:gemsrc_clone_root]
53
+ ENV['GEMSRC_CLONE_ROOT'], Gem.configuration[:gemsrc_clone_root] = nil, '~/bar'
54
+ example.run
55
+ ENV['GEMSRC_CLONE_ROOT'], Gem.configuration[:gemsrc_clone_root] = e, g
56
+ end
57
+ its(:clone_dir) { should == '~/bar/my_awesome_gem' }
58
+ end
59
+
60
+ context "without clone_root configuration" do
61
+ around do |example|
62
+ e, g = ENV['GEMSRC_CLONE_ROOT'], Gem.configuration[:gemsrc_clone_root]
63
+ ENV['GEMSRC_CLONE_ROOT'], Gem.configuration[:gemsrc_clone_root] = nil, nil
64
+ example.run
65
+ ENV['GEMSRC_CLONE_ROOT'], Gem.configuration[:gemsrc_clone_root] = e, g
66
+ end
67
+ its(:clone_dir) { should == '~/aho/my_awesome_gem/src' }
68
+ end
69
+
70
+ end
71
+ end
@@ -0,0 +1,6 @@
1
+ $LOAD_PATH.unshift(File.join(File.dirname(__FILE__), '..', 'lib'))
2
+ $LOAD_PATH.unshift(File.dirname(__FILE__))
3
+
4
+ require 'bundler/setup'
5
+ Bundler.require
6
+ require File.join(File.dirname(__FILE__), '../lib/rubygems_plugin')
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: gem-src
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.9.0
4
+ version: 0.10.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Akira Matsuda
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2017-01-20 00:00:00.000000000 Z
11
+ date: 2020-10-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -38,7 +38,11 @@ files:
38
38
  - Rakefile
39
39
  - etc/rbenv.d/exec/~gem-src.bash
40
40
  - gem-src.gemspec
41
+ - lib/gem/src/irregular_repositories.rb
41
42
  - lib/rubygems_plugin.rb
43
+ - plugins.rb
44
+ - spec/gem-src_spec.rb
45
+ - spec/spec_helper.rb
42
46
  homepage: https://github.com/amatsuda/gem-src
43
47
  licenses: []
44
48
  metadata: {}
@@ -64,9 +68,10 @@ required_rubygems_version: !ruby/object:Gem::Requirement
64
68
  - !ruby/object:Gem::Version
65
69
  version: '0'
66
70
  requirements: []
67
- rubyforge_project:
68
- rubygems_version: 2.6.8
69
- signing_key:
71
+ rubygems_version: 3.2.0.rc.1
72
+ signing_key:
70
73
  specification_version: 4
71
74
  summary: Gem.post_install { `git clone gem_source src` }
72
- test_files: []
75
+ test_files:
76
+ - spec/gem-src_spec.rb
77
+ - spec/spec_helper.rb