gem-src 0.2.0 → 0.2.1

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.
Files changed (4) hide show
  1. data/README.md +49 -0
  2. data/gem-src.gemspec +1 -1
  3. data/lib/rubygems_plugin.rb +6 -1
  4. metadata +38 -18
data/README.md CHANGED
@@ -2,10 +2,59 @@
2
2
 
3
3
  A gem 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
+
5
6
  ## Installation
6
7
 
7
8
  $ gem install gem-src
8
9
 
10
+
11
+ ## Usage (Configuration)
12
+
13
+ ### By default
14
+
15
+ With this gem installed, every `gem install` you perform will be followed by automatic `git clone` into the installed gem's "src" directory (if the gemspec's "homepage" property points to a Git repo).
16
+
17
+ For example, when you execute
18
+
19
+ % gem i kaminari
20
+ and if the gem is installed into `~/.gem/ruby/1.8/kaminari-0.14.1` directory, you'll see Kaminari's full Git repo at `~/.gem/ruby/1.8/kaminari-0.14.1/src` directory.
21
+
22
+ So, the whole directory structure will be like this.
23
+
24
+ ~/.gem/ruby/1.8
25
+ ├── gems
26
+ │ ├── arel-3.0.2
27
+ │   │   ├── src
28
+ │ ├── gem-src-0.2.0
29
+ │   │   ├── src
30
+ │ ├── kaminari-0.14.0
31
+ │   │   ├── src
32
+ │ ├── kaminari-0.14.1
33
+ │   │   ├── src
34
+ ...
35
+ Note that if you're using RVM, each of `~/.rvm/gems/*/gems/*` will have it's Git repo inside "src" directory.
36
+
37
+ ### GEMSRC_CLONE_ROOT env var
38
+
39
+ Instead of cloning the repo under installed gem directory for each `gem install`, you can specify one single directory via `GEMSRC_CLONE_ROOT` environment variable to keep all the cloned repositories.
40
+ This way, `git clone` will no more be executed per every `gem update`.
41
+ This option would be more efficient particularly if you're frequently switching RVM gemsets, or using bundler with `--path` per each projects.
42
+
43
+ For example,
44
+
45
+ % GEMSRC_CLONE_ROOT=~/src gem i active_decorator
46
+ will clone the Git repo into `~/src/active_decorator` directory if not exists.
47
+
48
+ Now, the whole directory structure will be like this.
49
+
50
+ ~
51
+ ├── src
52
+ │ ├── active_decorator
53
+ │ ├── capybara
54
+ │ ├── i18n_generators
55
+ ...
56
+
57
+
9
58
  ## Contributing
10
59
 
11
60
  1. Fork it
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.2.0'
7
+ gem.version = '0.2.1'
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,7 +1,12 @@
1
1
  require 'rubygems'
2
2
 
3
3
  Gem.post_install do |installer|
4
- clone_dir = ENV['GEMSRC_CLONE_ROOT'] ? File.join(ENV['GEMSRC_CLONE_ROOT'], installer.spec.name) : File.join(installer.gem_dir, 'src')
4
+ clone_dir = if ENV['GEMSRC_CLONE_ROOT']
5
+ File.join ENV['GEMSRC_CLONE_ROOT'], installer.spec.name
6
+ else
7
+ gem_dir = installer.respond_to?(:gem_dir) ? installer.gem_dir : File.join(installer.gem_home, 'gems', installer.spec.full_name)
8
+ File.join gem_dir, 'src'
9
+ end
5
10
 
6
11
  if (repo = installer.spec.homepage) && !repo.empty? && !File.exists?(clone_dir)
7
12
  if repo =~ /\Ahttps?:\/\/([^.]+)\.github.com\/(.+)/
metadata CHANGED
@@ -1,23 +1,33 @@
1
- --- !ruby/object:Gem::Specification
1
+ --- !ruby/object:Gem::Specification
2
2
  name: gem-src
3
- version: !ruby/object:Gem::Version
4
- version: 0.2.0
3
+ version: !ruby/object:Gem::Version
4
+ hash: 21
5
5
  prerelease:
6
+ segments:
7
+ - 0
8
+ - 2
9
+ - 1
10
+ version: 0.2.1
6
11
  platform: ruby
7
- authors:
12
+ authors:
8
13
  - Akira Matsuda
9
14
  autorequire:
10
15
  bindir: bin
11
16
  cert_chain: []
12
- date: 2012-10-15 00:00:00.000000000 Z
17
+
18
+ date: 2012-10-16 00:00:00 Z
13
19
  dependencies: []
20
+
14
21
  description: Gem.post_install { `git clone gem_source src` }
15
- email:
22
+ email:
16
23
  - ronnie@dio.jp
17
24
  executables: []
25
+
18
26
  extensions: []
27
+
19
28
  extra_rdoc_files: []
20
- files:
29
+
30
+ files:
21
31
  - .gitignore
22
32
  - Gemfile
23
33
  - LICENSE.txt
@@ -27,26 +37,36 @@ files:
27
37
  - lib/rubygems_plugin.rb
28
38
  homepage: https://github.com/amatsuda/gem-src
29
39
  licenses: []
40
+
30
41
  post_install_message:
31
42
  rdoc_options: []
32
- require_paths:
43
+
44
+ require_paths:
33
45
  - lib
34
- required_ruby_version: !ruby/object:Gem::Requirement
46
+ required_ruby_version: !ruby/object:Gem::Requirement
35
47
  none: false
36
- requirements:
37
- - - ! '>='
38
- - !ruby/object:Gem::Version
39
- version: '0'
40
- required_rubygems_version: !ruby/object:Gem::Requirement
48
+ requirements:
49
+ - - ">="
50
+ - !ruby/object:Gem::Version
51
+ hash: 3
52
+ segments:
53
+ - 0
54
+ version: "0"
55
+ required_rubygems_version: !ruby/object:Gem::Requirement
41
56
  none: false
42
- requirements:
43
- - - ! '>='
44
- - !ruby/object:Gem::Version
45
- version: '0'
57
+ requirements:
58
+ - - ">="
59
+ - !ruby/object:Gem::Version
60
+ hash: 3
61
+ segments:
62
+ - 0
63
+ version: "0"
46
64
  requirements: []
65
+
47
66
  rubyforge_project:
48
67
  rubygems_version: 1.8.24
49
68
  signing_key:
50
69
  specification_version: 3
51
70
  summary: Gem.post_install { `git clone gem_source src` }
52
71
  test_files: []
72
+