gem-src 0.7.0 → 0.8.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
2
  SHA1:
3
- metadata.gz: 290fdb9f297daf47e0049fe5ef7dbb74aaf1fe62
4
- data.tar.gz: 8e73a0144d07eb2cb81c66ff4b25de056fc94b4e
3
+ metadata.gz: 2ba1c08b26237e18feec53fe531dc1834167c8c4
4
+ data.tar.gz: a5e99da74ead21538aecb0aa7fdf0ff72aaaa38c
5
5
  SHA512:
6
- metadata.gz: add07fabc5ee0913f833e1b6ee2ff9feb1d92a3a66c7e234765d05efa1142bff0a151b2dd7d83ba8546eafff7807caedc45ad58a367130f1288cfd5cbd70d293
7
- data.tar.gz: a6f4572af583dd36ee3fbb8539da6c1874d3a92afa998d85397781905e20512b461de8d27083e258e1a7985d6d9a2ec9238b0c62f4d6b65f32f7f7d01b63f0e5
6
+ metadata.gz: 787bd19f020179c1714f40cb3c9c0356f43aec47b09b73335dd565076d149041fb660888a047e29bb06cc0d1c7fb7ba39212ab727a9138cbb8ac3b2200d906f6
7
+ data.tar.gz: 6c5b37cc84214c884239d054ecaadcd9c36c0702479daf432520bb101a23128cbf0d8ee1ba4febfed1a90a4da713cca1c06c415731d5588193cd393580a0201c
data/README.md CHANGED
@@ -2,6 +2,14 @@
2
2
 
3
3
  gem-src is a gem plugin && rbenv plugin that automatically `git clone`s the gem's source right after every `gem install` so you can `git log`, `git grep` and of course write your patch there!
4
4
 
5
+ ***TL;DR***
6
+
7
+ % git clone https://github.com/amatsuda/gem-src.git ~/.rbenv/plugins/gem-src
8
+ % mkdir ~/src
9
+ % echo "gemsrc_clone_root: ~/src" >> ~/.gemrc
10
+
11
+ Then you're all set!
12
+
5
13
 
6
14
  ## Installation
7
15
 
@@ -11,7 +19,7 @@ gem-src is a gem plugin that can be installed via gem install command:
11
19
 
12
20
  % gem install gem-src
13
21
 
14
- ### As an rbenv plugin (recommended)
22
+ ### :star2: As an rbenv plugin (recommended)
15
23
 
16
24
  Alternatively, if you're using rbenv, you can install gem-src as an rbenv plugin:
17
25
 
@@ -46,7 +54,7 @@ So, the whole directory structure will be like this.
46
54
  Note that you might be cloning the same repository again and again as the gem is updated, or the gem install directory changes.
47
55
  For example, if you're using RVM, each of `~/.rvm/gems/*/gems/*` will have it's Git repo inside "src" directory.
48
56
 
49
- ### Specifying gemsrc_clone_root (strongly recommended)
57
+ ### :star2: Specifying gemsrc_clone_root (strongly recommended)
50
58
 
51
59
  Instead of cloning the repo under installed gem directory for each `gem install`, you can specify one single directory to keep all the cloned source repositories.
52
60
 
@@ -98,6 +106,12 @@ When you firstly installed this gem, you might want to type in this command righ
98
106
  % gem pristine --all
99
107
  This will reinstall all the already installed gems, and so will `git clone` all the repos.
100
108
 
109
+ ## Skip cloning
110
+
111
+ If you want to skip cloning repositories, you can skip cloning by providing an environment variable `GEMSRC_SKIP`:
112
+
113
+ % GEMSRC_SKIP=true bundle install
114
+
101
115
 
102
116
  ## Contributing
103
117
 
data/gem-src.gemspec CHANGED
@@ -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.7.0'
7
+ gem.version = '0.8.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` }'
@@ -1,8 +1,12 @@
1
+ # frozen-string-literal: true
2
+
1
3
  require 'rubygems'
2
4
  require 'net/https'
3
5
 
4
6
  module Gem
5
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, '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', 'spreadsheet' => 'https://github.com/zdavatz/spreadsheet', 'thin' => 'https://github.com/macournoyer/thin', 'uniform_notifier' => 'https://github.com/flyerhzm/uniform_notifier'}.freeze
9
+
6
10
  attr_reader :installer
7
11
 
8
12
  def initialize(installer)
@@ -21,7 +25,7 @@ module Gem
21
25
  end
22
26
 
23
27
  def github_url(url)
24
- if url =~ /\Ahttps?:\/\/([^.]+)\.github.com\/(.+)/
28
+ if url =~ /\Ahttps?:\/\/([^.]+)\.github\.(?:com|io)\/(.+)/
25
29
  if $1 == 'www'
26
30
  "https://github.com/#{$2}"
27
31
  elsif $1 == 'wiki'
@@ -71,6 +75,8 @@ module Gem
71
75
  @tested_repositories << repository
72
76
  return if github?(repository) && !github_page_exists?(repository)
73
77
 
78
+ puts "gem-src: #{installer.spec.name} - Cloning from #{repository}..." if verbose?
79
+
74
80
  if use_ghq?
75
81
  system 'ghq', 'get', repository
76
82
  else
@@ -83,18 +89,40 @@ module Gem
83
89
  end
84
90
 
85
91
  def git_clone_homepage_or_source_code_uri_or_homepage_uri_or_github_organization_uri
92
+ return false if skip_clone?
86
93
  return false if File.exist? clone_dir
87
- git_clone(installer.spec.homepage) ||
94
+
95
+ now = Time.now
96
+
97
+ if IRREGULAR_REPOSITORIES.key? installer.spec.name
98
+ return git_clone IRREGULAR_REPOSITORIES[installer.spec.name]
99
+ end
100
+
101
+ result = git_clone(installer.spec.homepage) ||
88
102
  git_clone(github_url(installer.spec.homepage)) ||
89
103
  git_clone(source_code_uri) ||
90
104
  git_clone(homepage_uri) ||
91
105
  git_clone(github_url(homepage_uri)) ||
92
106
  git_clone(github_organization_uri(installer.spec.name))
107
+
108
+ if verbose?
109
+ puts "gem-src: #{installer.spec.name} - !!! Failed to find a repo." if result.nil?
110
+ puts "gem-src: #{installer.spec.name} - #{Time.now - now}s"
111
+ end
112
+ result
93
113
  end
94
114
 
95
115
  def api_uri_for(key)
96
116
  uri = api[Regexp.new("^#{key}_uri: (.*)$"), 1]
97
- uri =~ /\Ahttps?:\/\// ? uri : nil
117
+ uri =~ /\A(?:https?|git):\/\// ? uri : nil
118
+ end
119
+
120
+ def skip_clone?
121
+ !!ENV['GEMSRC_SKIP']
122
+ end
123
+
124
+ def verbose?
125
+ !!ENV['GEMSRC_VERBOSE'] || Gem.configuration[:gemsrc_clone_root]
98
126
  end
99
127
  end
100
128
  end
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.7.0
4
+ version: 0.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Akira Matsuda
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2015-10-20 00:00:00.000000000 Z
11
+ date: 2016-09-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rspec
@@ -64,9 +64,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
64
64
  version: '0'
65
65
  requirements: []
66
66
  rubyforge_project:
67
- rubygems_version: 2.4.8
67
+ rubygems_version: 2.5.1
68
68
  signing_key:
69
69
  specification_version: 4
70
70
  summary: Gem.post_install { `git clone gem_source src` }
71
71
  test_files: []
72
- has_rdoc: