specific_install 0.3.2 → 0.3.6
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.
- 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
|