gem-src 0.3.3 → 0.4.0
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.
- data/gem-src.gemspec +1 -1
- data/lib/rubygems_plugin.rb +55 -17
- metadata +18 -38
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
|
+
gem.version = '0.4.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` }'
|
data/lib/rubygems_plugin.rb
CHANGED
@@ -1,19 +1,27 @@
|
|
1
1
|
require 'rubygems'
|
2
2
|
|
3
|
-
Gem
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
3
|
+
module Gem
|
4
|
+
class Src
|
5
|
+
attr_reader :installer
|
6
|
+
|
7
|
+
def initialize(installer)
|
8
|
+
@installer = installer
|
9
|
+
end
|
10
|
+
|
11
|
+
def clone_dir
|
12
|
+
@clone_dir ||= if ENV['GEMSRC_CLONE_ROOT']
|
13
|
+
File.expand_path installer.spec.name, ENV['GEMSRC_CLONE_ROOT']
|
14
|
+
elsif Gem.configuration[:gemsrc_clone_root]
|
15
|
+
File.expand_path installer.spec.name, Gem.configuration[:gemsrc_clone_root]
|
16
|
+
else
|
17
|
+
gem_dir = installer.respond_to?(:gem_dir) ? installer.gem_dir : File.expand_path(File.join(installer.gem_home, 'gems', installer.spec.full_name))
|
18
|
+
File.join gem_dir, 'src'
|
19
|
+
end
|
20
|
+
end
|
21
|
+
|
22
|
+
def github_url(url)
|
23
|
+
if url =~ /\Ahttps?:\/\/([^.]+)\.github.com\/(.+)/
|
24
|
+
if $1 == 'www'
|
17
25
|
"https://github.com/#{$2}"
|
18
26
|
elsif $1 == 'wiki'
|
19
27
|
# https://wiki.github.com/foo/bar => https://github.com/foo/bar
|
@@ -23,10 +31,40 @@ Gem.post_install do |installer|
|
|
23
31
|
"https://github.com/#{$1}/#{$2}"
|
24
32
|
end
|
25
33
|
end
|
34
|
+
end
|
26
35
|
|
27
|
-
|
28
|
-
|
29
|
-
|
36
|
+
def git?(url)
|
37
|
+
!`git ls-remote #{url} 2> /dev/null`.empty?
|
38
|
+
end
|
39
|
+
|
40
|
+
def api
|
41
|
+
@api ||= Net::HTTP.get(URI.parse "http://rubygems.org/api/v1/gems/#{installer.spec.name}.yaml")
|
42
|
+
end
|
43
|
+
|
44
|
+
def source_code_uri
|
45
|
+
api[/^source_code_uri: (.*)$/, 1]
|
46
|
+
end
|
47
|
+
|
48
|
+
def homepage_uri
|
49
|
+
api[/^homepage_uri: (.*)$/, 1]
|
50
|
+
end
|
51
|
+
|
52
|
+
def git_clone(repository)
|
53
|
+
system 'git', 'clone', repository, clone_dir if repository && !repository.empty? && git?(repository)
|
54
|
+
end
|
55
|
+
|
56
|
+
def git_clone_homepage_or_source_code_uri_or_homepage_uri
|
57
|
+
return false if File.exists? clone_dir
|
58
|
+
git_clone(installer.spec.homepage) ||
|
59
|
+
git_clone(github_url(installer.spec.homepage)) ||
|
60
|
+
git_clone(source_code_uri) ||
|
61
|
+
git_clone(homepage_uri) ||
|
62
|
+
git_clone(github_url(homepage_uri))
|
30
63
|
end
|
31
64
|
end
|
32
65
|
end
|
66
|
+
|
67
|
+
|
68
|
+
Gem.post_install do |installer|
|
69
|
+
Gem::Src.new(installer).git_clone_homepage_or_source_code_uri_or_homepage_uri
|
70
|
+
end
|
metadata
CHANGED
@@ -1,33 +1,23 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: gem-src
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.4.0
|
5
5
|
prerelease:
|
6
|
-
segments:
|
7
|
-
- 0
|
8
|
-
- 3
|
9
|
-
- 3
|
10
|
-
version: 0.3.3
|
11
6
|
platform: ruby
|
12
|
-
authors:
|
7
|
+
authors:
|
13
8
|
- Akira Matsuda
|
14
9
|
autorequire:
|
15
10
|
bindir: bin
|
16
11
|
cert_chain: []
|
17
|
-
|
18
|
-
date: 2012-10-16 00:00:00 Z
|
12
|
+
date: 2012-10-17 00:00:00.000000000 Z
|
19
13
|
dependencies: []
|
20
|
-
|
21
14
|
description: Gem.post_install { `git clone gem_source src` }
|
22
|
-
email:
|
15
|
+
email:
|
23
16
|
- ronnie@dio.jp
|
24
17
|
executables: []
|
25
|
-
|
26
18
|
extensions: []
|
27
|
-
|
28
19
|
extra_rdoc_files: []
|
29
|
-
|
30
|
-
files:
|
20
|
+
files:
|
31
21
|
- .gitignore
|
32
22
|
- Gemfile
|
33
23
|
- LICENSE.txt
|
@@ -37,36 +27,26 @@ files:
|
|
37
27
|
- lib/rubygems_plugin.rb
|
38
28
|
homepage: https://github.com/amatsuda/gem-src
|
39
29
|
licenses: []
|
40
|
-
|
41
30
|
post_install_message:
|
42
31
|
rdoc_options: []
|
43
|
-
|
44
|
-
require_paths:
|
32
|
+
require_paths:
|
45
33
|
- lib
|
46
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
34
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
47
35
|
none: false
|
48
|
-
requirements:
|
49
|
-
- -
|
50
|
-
- !ruby/object:Gem::Version
|
51
|
-
|
52
|
-
|
53
|
-
- 0
|
54
|
-
version: "0"
|
55
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
36
|
+
requirements:
|
37
|
+
- - ! '>='
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: '0'
|
40
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
56
41
|
none: false
|
57
|
-
requirements:
|
58
|
-
- -
|
59
|
-
- !ruby/object:Gem::Version
|
60
|
-
|
61
|
-
segments:
|
62
|
-
- 0
|
63
|
-
version: "0"
|
42
|
+
requirements:
|
43
|
+
- - ! '>='
|
44
|
+
- !ruby/object:Gem::Version
|
45
|
+
version: '0'
|
64
46
|
requirements: []
|
65
|
-
|
66
47
|
rubyforge_project:
|
67
48
|
rubygems_version: 1.8.24
|
68
49
|
signing_key:
|
69
50
|
specification_version: 3
|
70
51
|
summary: Gem.post_install { `git clone gem_source src` }
|
71
52
|
test_files: []
|
72
|
-
|