specific_install 0.3.3 → 0.3.4

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: 34836fbe97d3b0e31d399ed3740fb1066630cda5
4
- data.tar.gz: 0d5fe0f2d82e3146f04c12791af9584624181c6b
3
+ metadata.gz: 67fb17da19b930aa9bf3fb9b35cef97e1a97d559
4
+ data.tar.gz: 6f7a3649c0128acf2c8c0c6f743a8c2794603dc0
5
5
  SHA512:
6
- metadata.gz: 31488875a64212384f74de1acbb9fb624c56d8688b98b174000c8d9e9c012c65a93811f1ebb0160a72d2fc31dfb4e20b7c6cbf9704be19271f991195b4c3edfb
7
- data.tar.gz: 79744026b113881e2a776f3e3d3dfbb54edc68d048fb59d513b456d9e61866ad02e1f8449f824fc15079c1322f6c16773e688411fb9f54775c78ac440e7b1073
6
+ metadata.gz: 9ac4fa8753d88955819d1c38a4f5e41d0fa20d77ff90e27027445702b8cc4b9734584dfc57b3539c52680bebfc72940a3494a56364bdcd82953bb554359b6c6a
7
+ data.tar.gz: 2414feaa06887345b6d9eea0d279a0a61cd37a8661b94205d805fd4b17b4ace2d93c4e8863cb024afc5d26e813227dc0d9830aaeb67e44ba346e846e876e4af3
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,8 +1,5 @@
1
1
  require 'rubygems/command_manager'
2
2
  require 'rubygems/dependency_installer'
3
- require 'tempfile'
4
- require 'fileutils'
5
- require 'open-uri'
6
3
 
7
4
  class Gem::Commands::SpecificInstallCommand < Gem::Command
8
5
  attr_accessor :output
@@ -30,6 +27,10 @@ class Gem::Commands::SpecificInstallCommand < Gem::Command
30
27
  add_option('-r', '--ref COMMIT-ISH', arguments) do |ref, options|
31
28
  options[:ref] = ref
32
29
  end
30
+
31
+ add_option('-u', '--user-install', arguments) do |userinstall, options|
32
+ options[:userinstall] = userinstall
33
+ end
33
34
  end
34
35
 
35
36
  def arguments
@@ -49,6 +50,7 @@ class Gem::Commands::SpecificInstallCommand < Gem::Command
49
50
  if @loc.nil?
50
51
  raise ArgumentError, "No location received. Use like `gem specific_install -l http://example.com/rdp/specific_install`"
51
52
  end
53
+ require 'tempfile' if not defined?(Tempfile)
52
54
  Dir.mktmpdir do |dir|
53
55
  if subdir = options[:directory]
54
56
  abort("Subdir '#{subdir}' is not a valid directory") unless valid_subdir?(subdir)
@@ -61,6 +63,13 @@ class Gem::Commands::SpecificInstallCommand < Gem::Command
61
63
  end
62
64
  end
63
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
+
64
73
  def break_unless_git_present
65
74
  unless system("which git") || system("where git")
66
75
  abort("Please install git before using a git based link for specific_install")
@@ -105,7 +114,7 @@ class Gem::Commands::SpecificInstallCommand < Gem::Command
105
114
  @loc = [@loc, '.git'].join unless @loc[/\.git$/]
106
115
 
107
116
  redirect_for_specs = ENV.fetch( "SPECIFIC_INSTALL_SPEC" ) { "" }
108
- system("git clone #{@loc} #{@top_dir} #{redirect_for_specs}")
117
+ git "clone", @loc, @top_dir, redirect_for_specs
109
118
  install_from_git(@src_dir)
110
119
  end
111
120
 
@@ -117,7 +126,7 @@ class Gem::Commands::SpecificInstallCommand < Gem::Command
117
126
  output.puts 'git installing from ' + @loc
118
127
 
119
128
  redirect_for_specs = ENV.fetch( "SPECIFIC_INSTALL_SPEC" ) { "" }
120
- system("git clone #{@loc} #{@top_dir} #{redirect_for_specs}")
129
+ git "clone", @loc, @top_dir, redirect_for_specs
121
130
  install_from_git(@src_dir)
122
131
  end
123
132
 
@@ -125,11 +134,12 @@ class Gem::Commands::SpecificInstallCommand < Gem::Command
125
134
  output.puts "Installing from git@github.com:#{@loc}.git"
126
135
 
127
136
  redirect_for_specs = ENV.fetch( "SPECIFIC_INSTALL_SPEC" ) { "" }
128
- system("git clone git@github.com:#{@loc}.git #{@top_dir} #{redirect_for_specs}")
137
+ git "clone", "git@github.com:#{@loc}.git", @topdir, redirect_for_specs
129
138
  install_from_git(@src_dir)
130
139
  end
131
140
 
132
141
  def download( full_url, output_name )
142
+ require 'open-uri' if not defined?(OpenURI)
133
143
  File.open(output_name, "wb") do |output_file|
134
144
  uri = URI.parse(full_url)
135
145
  output_file.write(uri.read)
@@ -140,7 +150,7 @@ class Gem::Commands::SpecificInstallCommand < Gem::Command
140
150
  Dir.chdir @top_dir do
141
151
  change_to_branch(@branch) if @branch
142
152
  reset_to_commit(@ref) if @ref
143
- system("git submodule update --init --recursive") # issue 25
153
+ git "submodule", "update", "--init", "--recursive" # Issue 25
144
154
  end
145
155
 
146
156
  Dir.chdir dir do
@@ -181,7 +191,9 @@ class Gem::Commands::SpecificInstallCommand < Gem::Command
181
191
  def install_gemspec
182
192
  gem = find_or_build_gem
183
193
  if gem
184
- inst = Gem::DependencyInstaller.new
194
+ install_options = {}
195
+ install_options[:user_install] = options[:userinstall].nil? ? nil : true
196
+ inst = Gem::DependencyInstaller.new install_options
185
197
  inst.install gem
186
198
  else
187
199
  nil
@@ -220,13 +232,13 @@ class Gem::Commands::SpecificInstallCommand < Gem::Command
220
232
  end
221
233
 
222
234
  def change_to_branch(branch)
223
- system("git checkout #{branch}")
224
- system("git branch")
235
+ git "checkout", branch
236
+ git "branch"
225
237
  end
226
238
 
227
239
  def reset_to_commit(ref)
228
- system("git reset --hard #{ref}")
229
- system("git show -q")
240
+ git "reset", "--hard", ref
241
+ git "show", "-q"
230
242
  end
231
243
 
232
244
  DOTDOT_REGEX = /(?:#{File::PATH_SEPARATOR}|\A)\.\.(?:#{File::PATH_SEPARATOR}|\z)/.freeze
@@ -1,3 +1,3 @@
1
1
  module SpecificInstall
2
- VERSION = "0.3.3"
2
+ VERSION = "0.3.4"
3
3
  end
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.3
4
+ version: 0.3.4
5
5
  platform: ruby
6
6
  authors:
7
7
  - Roger Pack
@@ -9,7 +9,7 @@ authors:
9
9
  autorequire:
10
10
  bindir: bin
11
11
  cert_chain: []
12
- date: 2017-01-23 00:00:00.000000000 Z
12
+ date: 2018-07-28 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: rspec
@@ -137,7 +137,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
137
137
  version: '0'
138
138
  requirements: []
139
139
  rubyforge_project: "[none]"
140
- rubygems_version: 2.5.2
140
+ rubygems_version: 2.5.2.3
141
141
  signing_key:
142
142
  specification_version: 4
143
143
  summary: rubygems plugin that allows you you to install a gem from from its github