specific_install 0.3.2 → 0.3.6
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/.gitignore +1 -0
- data/ChangeLog +2 -0
- data/README.md +17 -5
- data/lib/rubygems/commands/specific_install_command.rb +38 -13
- data/lib/rubygems_plugin.rb +7 -2
- data/lib/specific_install/version.rb +1 -1
- data/specific_install.gemspec +0 -2
- metadata +4 -19
- data/Gemfile.lock +0 -44
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 7512355e136131a4c1413629e4a30ff7be2a5326dcb4fa213b627448ee53f1a1
|
4
|
+
data.tar.gz: 587deaf278b3408bea5e3deb07b45ccafef2d8e21652857853816db225182574
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: d2b36f503ae729bdc11a657b98dc925c1b345a5f88113648134e51e5c4be9d6c30d39012ad095afab98233a318ffe79086f6a8e3d3de989d04cff10491333ab5
|
7
|
+
data.tar.gz: 78579052188479a5ae52f18817e22917f907daa8bd05d121fa204e5020752cf197e48f5e91a6b5aeaeb859425440d68e32a8ec24a8db55066d02362e2934343d
|
data/.gitignore
CHANGED
data/ChangeLog
CHANGED
data/README.md
CHANGED
@@ -16,7 +16,7 @@ Or install it yourself as:
|
|
16
16
|
|
17
17
|
## Usage
|
18
18
|
|
19
|
-
A Rubygem plugin that allows you to install an "edge" gem straight from its github repository,
|
19
|
+
A Rubygem plugin that allows you to install an "edge" gem straight from its github repository,
|
20
20
|
or install one from an arbitrary url web:
|
21
21
|
|
22
22
|
ex:
|
@@ -47,12 +47,18 @@ Or a specific branch in an explicit way
|
|
47
47
|
$ gem specific_install -l http://github.com/githubsvnclone/rdoc.git -b edge
|
48
48
|
`
|
49
49
|
|
50
|
-
Or a specific subdirectory in a repo
|
50
|
+
Or a specific subdirectory in a repo
|
51
51
|
|
52
52
|
`
|
53
53
|
$ gem specific_install https://github.com/orlandohill/waxeye -d src/ruby
|
54
54
|
`
|
55
55
|
|
56
|
+
Or install in the users personal gem directory
|
57
|
+
|
58
|
+
`
|
59
|
+
$ gem specific_install https://github.com/orlandohill/waxeye -u
|
60
|
+
`
|
61
|
+
|
56
62
|
The following URI types are accepted:
|
57
63
|
|
58
64
|
- http(s)://github.com/rdp/specific_install.git
|
@@ -64,7 +70,7 @@ The following URI types are accepted:
|
|
64
70
|
|
65
71
|
### Additional Options
|
66
72
|
|
67
|
-
-l --location URL of resource
|
73
|
+
-l --location URL of resource
|
68
74
|
Formats of URL/Resource
|
69
75
|
* Full URL to HTTP Repo `https://github.com/rdp/specific_install.git`
|
70
76
|
* Full URL to Git Repo `git@github.com:rdp/specific_install.git`
|
@@ -79,13 +85,19 @@ The following URI types are accepted:
|
|
79
85
|
|
80
86
|
-d --directory DIRECTORY in source
|
81
87
|
This will change the directory in the downloaded source directory
|
82
|
-
before building the gem.
|
88
|
+
before building the gem.
|
89
|
+
|
90
|
+
-r, --ref COMMIT-ISH to use for Gem creation
|
91
|
+
Ref option does a `git reset --hard COMMIT-ISH` before `gem build GEM`
|
92
|
+
|
93
|
+
-u, --user-install to indicate that the gem should be unpacked into the users personal gem directory.
|
94
|
+
This will install the gem in the user folder making it possible to use specific_install without root access.
|
83
95
|
|
84
96
|
`git_install` is aliased to the behavior of `specific_install`
|
85
97
|
This alias is shorter and is more intention revealing of the gem's behavior.
|
86
98
|
## Internal Behavior
|
87
99
|
|
88
|
-
It runs `git clone`, and `rake install,` install the gem, then deletes the temp directory
|
100
|
+
It runs `git clone`, and `rake install,` install the gem, then deletes the temp directory.
|
89
101
|
|
90
102
|
## Compatibility
|
91
103
|
|
@@ -1,9 +1,5 @@
|
|
1
1
|
require 'rubygems/command_manager'
|
2
2
|
require 'rubygems/dependency_installer'
|
3
|
-
require 'tempfile'
|
4
|
-
require 'backports'
|
5
|
-
require 'fileutils'
|
6
|
-
require 'open-uri'
|
7
3
|
|
8
4
|
class Gem::Commands::SpecificInstallCommand < Gem::Command
|
9
5
|
attr_accessor :output
|
@@ -20,13 +16,21 @@ class Gem::Commands::SpecificInstallCommand < Gem::Command
|
|
20
16
|
options[:location] = location
|
21
17
|
end
|
22
18
|
|
23
|
-
add_option('-b', '--branch
|
19
|
+
add_option('-b', '--branch BRANCH', arguments) do |branch, options|
|
24
20
|
options[:branch] = branch
|
25
21
|
end
|
26
22
|
|
27
23
|
add_option('-d', '--directory DIRECTORY', arguments) do |directory, options|
|
28
24
|
options[:directory] = directory
|
29
25
|
end
|
26
|
+
|
27
|
+
add_option('-r', '--ref COMMIT-ISH', arguments) do |ref, options|
|
28
|
+
options[:ref] = ref
|
29
|
+
end
|
30
|
+
|
31
|
+
add_option('-u', '--user-install', arguments) do |userinstall, options|
|
32
|
+
options[:userinstall] = userinstall
|
33
|
+
end
|
30
34
|
end
|
31
35
|
|
32
36
|
def arguments
|
@@ -42,9 +46,11 @@ class Gem::Commands::SpecificInstallCommand < Gem::Command
|
|
42
46
|
def execute
|
43
47
|
@loc ||= set_location
|
44
48
|
@branch ||= set_branch if set_branch
|
49
|
+
@ref ||= set_ref
|
45
50
|
if @loc.nil?
|
46
51
|
raise ArgumentError, "No location received. Use like `gem specific_install -l http://example.com/rdp/specific_install`"
|
47
52
|
end
|
53
|
+
require 'tempfile' if not defined?(Tempfile)
|
48
54
|
Dir.mktmpdir do |dir|
|
49
55
|
if subdir = options[:directory]
|
50
56
|
abort("Subdir '#{subdir}' is not a valid directory") unless valid_subdir?(subdir)
|
@@ -57,8 +63,15 @@ class Gem::Commands::SpecificInstallCommand < Gem::Command
|
|
57
63
|
end
|
58
64
|
end
|
59
65
|
|
66
|
+
private
|
67
|
+
|
68
|
+
def git(*commands)
|
69
|
+
system "git #{commands.join(' ').chomp(' ')}"
|
70
|
+
raise "'$ git #{commands.join(' ').chomp(' ')}' exited with an error" if $?.exitstatus != 0
|
71
|
+
end
|
72
|
+
|
60
73
|
def break_unless_git_present
|
61
|
-
unless system("
|
74
|
+
unless system("type -a git")
|
62
75
|
abort("Please install git before using a git based link for specific_install")
|
63
76
|
end
|
64
77
|
end
|
@@ -101,7 +114,7 @@ class Gem::Commands::SpecificInstallCommand < Gem::Command
|
|
101
114
|
@loc = [@loc, '.git'].join unless @loc[/\.git$/]
|
102
115
|
|
103
116
|
redirect_for_specs = ENV.fetch( "SPECIFIC_INSTALL_SPEC" ) { "" }
|
104
|
-
|
117
|
+
git "clone", @loc, @top_dir, redirect_for_specs
|
105
118
|
install_from_git(@src_dir)
|
106
119
|
end
|
107
120
|
|
@@ -113,7 +126,7 @@ class Gem::Commands::SpecificInstallCommand < Gem::Command
|
|
113
126
|
output.puts 'git installing from ' + @loc
|
114
127
|
|
115
128
|
redirect_for_specs = ENV.fetch( "SPECIFIC_INSTALL_SPEC" ) { "" }
|
116
|
-
|
129
|
+
git "clone", @loc, @top_dir, redirect_for_specs
|
117
130
|
install_from_git(@src_dir)
|
118
131
|
end
|
119
132
|
|
@@ -121,11 +134,12 @@ class Gem::Commands::SpecificInstallCommand < Gem::Command
|
|
121
134
|
output.puts "Installing from git@github.com:#{@loc}.git"
|
122
135
|
|
123
136
|
redirect_for_specs = ENV.fetch( "SPECIFIC_INSTALL_SPEC" ) { "" }
|
124
|
-
|
137
|
+
git "clone", "git@github.com:#{@loc}.git", @top_dir, redirect_for_specs
|
125
138
|
install_from_git(@src_dir)
|
126
139
|
end
|
127
140
|
|
128
141
|
def download( full_url, output_name )
|
142
|
+
require 'open-uri' if not defined?(OpenURI)
|
129
143
|
File.open(output_name, "wb") do |output_file|
|
130
144
|
uri = URI.parse(full_url)
|
131
145
|
output_file.write(uri.read)
|
@@ -135,7 +149,8 @@ class Gem::Commands::SpecificInstallCommand < Gem::Command
|
|
135
149
|
def install_from_git(dir)
|
136
150
|
Dir.chdir @top_dir do
|
137
151
|
change_to_branch(@branch) if @branch
|
138
|
-
|
152
|
+
reset_to_commit(@ref) if @ref
|
153
|
+
git "submodule", "update", "--init", "--recursive" # Issue 25
|
139
154
|
end
|
140
155
|
|
141
156
|
Dir.chdir dir do
|
@@ -165,6 +180,10 @@ class Gem::Commands::SpecificInstallCommand < Gem::Command
|
|
165
180
|
options[:branch] || options[:args][1]
|
166
181
|
end
|
167
182
|
|
183
|
+
def set_ref
|
184
|
+
options[:ref] || options[:args][2]
|
185
|
+
end
|
186
|
+
|
168
187
|
def success_message
|
169
188
|
output.puts 'Successfully installed'
|
170
189
|
end
|
@@ -172,7 +191,9 @@ class Gem::Commands::SpecificInstallCommand < Gem::Command
|
|
172
191
|
def install_gemspec
|
173
192
|
gem = find_or_build_gem
|
174
193
|
if gem
|
175
|
-
|
194
|
+
install_options = {}
|
195
|
+
install_options[:user_install] = options[:userinstall].nil? ? nil : true
|
196
|
+
inst = Gem::DependencyInstaller.new install_options
|
176
197
|
inst.install gem
|
177
198
|
else
|
178
199
|
nil
|
@@ -211,8 +232,12 @@ class Gem::Commands::SpecificInstallCommand < Gem::Command
|
|
211
232
|
end
|
212
233
|
|
213
234
|
def change_to_branch(branch)
|
214
|
-
|
215
|
-
|
235
|
+
git "checkout", branch
|
236
|
+
end
|
237
|
+
|
238
|
+
def reset_to_commit(ref)
|
239
|
+
git "reset", "--hard", ref
|
240
|
+
git "show", "-q"
|
216
241
|
end
|
217
242
|
|
218
243
|
DOTDOT_REGEX = /(?:#{File::PATH_SEPARATOR}|\A)\.\.(?:#{File::PATH_SEPARATOR}|\z)/.freeze
|
data/lib/rubygems_plugin.rb
CHANGED
@@ -1,2 +1,7 @@
|
|
1
|
-
|
2
|
-
require "
|
1
|
+
begin
|
2
|
+
require "specific_install/version"
|
3
|
+
require "rubygems/commands/specific_install_command"
|
4
|
+
rescue LoadError
|
5
|
+
# This happens with `bundle exec gem build <gemspec>` commands.
|
6
|
+
# But in that context we don't care.
|
7
|
+
end
|
data/specific_install.gemspec
CHANGED
@@ -19,9 +19,7 @@ Gem::Specification.new do |s|
|
|
19
19
|
s.test_files = s.files.grep(%r{^(test|spec|features)/})
|
20
20
|
s.require_paths = ["lib"]
|
21
21
|
s.platform = Gem::Platform::RUBY
|
22
|
-
s.rubyforge_project = '[none]'
|
23
22
|
|
24
|
-
s.add_dependency 'backports'
|
25
23
|
s.add_development_dependency 'rspec'
|
26
24
|
s.add_development_dependency 'sane'
|
27
25
|
s.add_development_dependency "bundler", "~> 1.3"
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: specific_install
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.3.
|
4
|
+
version: 0.3.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Roger Pack
|
@@ -9,22 +9,8 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date:
|
12
|
+
date: 2021-11-07 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
|
-
- !ruby/object:Gem::Dependency
|
15
|
-
name: backports
|
16
|
-
requirement: !ruby/object:Gem::Requirement
|
17
|
-
requirements:
|
18
|
-
- - ">="
|
19
|
-
- !ruby/object:Gem::Version
|
20
|
-
version: '0'
|
21
|
-
type: :runtime
|
22
|
-
prerelease: false
|
23
|
-
version_requirements: !ruby/object:Gem::Requirement
|
24
|
-
requirements:
|
25
|
-
- - ">="
|
26
|
-
- !ruby/object:Gem::Version
|
27
|
-
version: '0'
|
28
14
|
- !ruby/object:Gem::Dependency
|
29
15
|
name: rspec
|
30
16
|
requirement: !ruby/object:Gem::Requirement
|
@@ -121,7 +107,6 @@ files:
|
|
121
107
|
- ".gitignore"
|
122
108
|
- ChangeLog
|
123
109
|
- Gemfile
|
124
|
-
- Gemfile.lock
|
125
110
|
- LICENSE.txt
|
126
111
|
- README.md
|
127
112
|
- Rakefile
|
@@ -151,8 +136,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
151
136
|
- !ruby/object:Gem::Version
|
152
137
|
version: '0'
|
153
138
|
requirements: []
|
154
|
-
rubyforge_project:
|
155
|
-
rubygems_version: 2.
|
139
|
+
rubyforge_project:
|
140
|
+
rubygems_version: 2.7.6
|
156
141
|
signing_key:
|
157
142
|
specification_version: 4
|
158
143
|
summary: rubygems plugin that allows you you to install a gem from from its github
|
data/Gemfile.lock
DELETED
@@ -1,44 +0,0 @@
|
|
1
|
-
PATH
|
2
|
-
remote: .
|
3
|
-
specs:
|
4
|
-
specific_install (0.3.2)
|
5
|
-
backports
|
6
|
-
|
7
|
-
GEM
|
8
|
-
remote: https://rubygems.org/
|
9
|
-
specs:
|
10
|
-
backports (3.6.8)
|
11
|
-
diff-lcs (1.2.4)
|
12
|
-
multi_json (1.8.0)
|
13
|
-
os (0.9.6)
|
14
|
-
rake (10.1.0)
|
15
|
-
rspec (2.14.1)
|
16
|
-
rspec-core (~> 2.14.0)
|
17
|
-
rspec-expectations (~> 2.14.0)
|
18
|
-
rspec-mocks (~> 2.14.0)
|
19
|
-
rspec-core (2.14.5)
|
20
|
-
rspec-expectations (2.14.3)
|
21
|
-
diff-lcs (>= 1.1.3, < 2.0)
|
22
|
-
rspec-mocks (2.14.3)
|
23
|
-
sane (0.25.6)
|
24
|
-
os
|
25
|
-
simplecov (0.7.1)
|
26
|
-
multi_json (~> 1.0)
|
27
|
-
simplecov-html (~> 0.7.1)
|
28
|
-
simplecov-html (0.7.1)
|
29
|
-
simplecov-vim (0.0.1)
|
30
|
-
|
31
|
-
PLATFORMS
|
32
|
-
ruby
|
33
|
-
|
34
|
-
DEPENDENCIES
|
35
|
-
bundler (~> 1.3)
|
36
|
-
rake
|
37
|
-
rspec
|
38
|
-
sane
|
39
|
-
simplecov
|
40
|
-
simplecov-vim
|
41
|
-
specific_install!
|
42
|
-
|
43
|
-
BUNDLED WITH
|
44
|
-
1.10.6
|