gem-wrappers 1.3.2 → 1.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.
- checksums.yaml +7 -7
- data/Changelog.md +6 -0
- data/README.md +2 -2
- data/lib/gem-wrappers.rb +33 -6
- data/lib/gem-wrappers/command.rb +8 -9
- data/lib/gem-wrappers/version.rb +1 -1
- data/test/gem-wrappers/command_test.rb +22 -17
- data/test/gem-wrappers/fakes.rb +16 -1
- data/test/gem-wrappers_test.rb +33 -1
- metadata +45 -42
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
|
-
---
|
2
|
-
SHA1:
|
3
|
-
|
4
|
-
|
5
|
-
SHA512:
|
6
|
-
|
7
|
-
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: 86a58106c9a11be5ed1d3a1e7d88f2d7418b3752
|
4
|
+
data.tar.gz: 6df162cbfbe63de825949ad7b4138138a27f63da
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 90e94c807854494b09eb8008f17dc576dbb79effe2f3c437d1269427482be4569f29312631a8b36b7253291759ab7d2adba375118de4ac9e61fc6edeff33efb3
|
7
|
+
data.tar.gz: 52da011fcb220741b5d40ee5300963362ff97202aa6ad71f1b1fcd8474c25f16b4953c773277ff410a41ca5c4a2724bc418574e12024ed64bd05bde4ffc6f10c
|
data/Changelog.md
CHANGED
data/README.md
CHANGED
@@ -53,7 +53,7 @@ gem install unicorn
|
|
53
53
|
The `unicorn` wrapper is located in `$GEM_HOME/wrappers`:
|
54
54
|
|
55
55
|
```bash
|
56
|
-
|
56
|
+
gem wrappers show unicorn
|
57
57
|
```
|
58
58
|
|
59
59
|
```ssh
|
@@ -91,7 +91,7 @@ export GEM_PATH="<%= gem_path.join(":") %>"
|
|
91
91
|
export GEM_HOME="<%= gem_home %>"
|
92
92
|
```
|
93
93
|
|
94
|
-
The path elements are calculated using this algorithm:
|
94
|
+
The `path` elements are calculated using this algorithm:
|
95
95
|
|
96
96
|
```ruby
|
97
97
|
ENV['PATH'].split(":").take(Gem.path.size + path_take)
|
data/lib/gem-wrappers.rb
CHANGED
@@ -1,7 +1,10 @@
|
|
1
|
+
require 'rbconfig'
|
1
2
|
require 'gem-wrappers/environment'
|
2
3
|
require 'gem-wrappers/installer'
|
3
4
|
|
4
5
|
module GemWrappers
|
6
|
+
class Exception < Gem::Exception ; end
|
7
|
+
class NoWrapper < Exception ; end
|
5
8
|
|
6
9
|
def self.environment
|
7
10
|
@environment ||= GemWrappers::Environment.new
|
@@ -36,18 +39,42 @@ module GemWrappers
|
|
36
39
|
installer.wrappers_path
|
37
40
|
end
|
38
41
|
|
42
|
+
def self.wrapper_path(exe)
|
43
|
+
file = File.join(wrappers_path, exe)
|
44
|
+
if executable?(file)
|
45
|
+
file
|
46
|
+
else
|
47
|
+
raise GemWrappers::NoWrapper, "No wrapper: #{file}"
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
def self.installed_wrappers
|
52
|
+
executables_in_directory(wrappers_path).sort.uniq
|
53
|
+
end
|
54
|
+
|
55
|
+
def self.gems_executables
|
56
|
+
# do not use map(&:...) - for ruby 1.8.6 compatibility
|
57
|
+
@executables ||= GemWrappers::Specification.installed_gems.map{|gem| gem.executables }.inject{|sum, n| sum + n }.uniq || []
|
58
|
+
end
|
59
|
+
|
39
60
|
def self.environment_file
|
40
61
|
environment.file_name
|
41
62
|
end
|
42
63
|
|
43
|
-
private
|
44
|
-
|
45
64
|
def self.ruby_executables
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
65
|
+
executables_in_directory(RbConfig::CONFIG["bindir"].sub(/\/+\z/, ''))
|
66
|
+
end
|
67
|
+
private_class_method :ruby_executables
|
68
|
+
|
69
|
+
def self.executables_in_directory(dir)
|
70
|
+
Dir.entries(dir).select do |file|
|
71
|
+
executable?(File.join(dir, file))
|
50
72
|
end
|
51
73
|
end
|
74
|
+
private_class_method :executables_in_directory
|
52
75
|
|
76
|
+
def self.executable?(path)
|
77
|
+
!File.directory?(path) && File.executable?(path)
|
78
|
+
end
|
79
|
+
private_class_method :executable?
|
53
80
|
end
|
data/lib/gem-wrappers/command.rb
CHANGED
@@ -32,7 +32,7 @@ DOC
|
|
32
32
|
subcommand = args.shift || ''
|
33
33
|
case subcommand
|
34
34
|
when '', 'show'
|
35
|
-
execute_show(args)
|
35
|
+
args.empty? ? execute_show : execute_show_path(args.first)
|
36
36
|
when 'regenerate'
|
37
37
|
execute_regenerate(args)
|
38
38
|
when FileExist
|
@@ -42,8 +42,12 @@ DOC
|
|
42
42
|
end
|
43
43
|
end
|
44
44
|
|
45
|
-
def
|
46
|
-
|
45
|
+
def execute_show_path(exe)
|
46
|
+
$stdout.puts gem_wrappers.wrapper_path(exe)
|
47
|
+
end
|
48
|
+
|
49
|
+
def execute_show
|
50
|
+
list = gem_wrappers.installed_wrappers
|
47
51
|
$stdout.puts description
|
48
52
|
$stdout.puts " Wrappers path: #{gem_wrappers.wrappers_path}"
|
49
53
|
$stdout.puts "Environment file: #{gem_wrappers.environment_file}"
|
@@ -57,7 +61,7 @@ DOC
|
|
57
61
|
end
|
58
62
|
|
59
63
|
def execute_regenerate(list = [])
|
60
|
-
list =
|
64
|
+
list = gem_wrappers.gems_executables if list.empty?
|
61
65
|
execute_show(list) if ENV['GEM_WRAPPERS_DEBUG']
|
62
66
|
gem_wrappers.install(list)
|
63
67
|
end
|
@@ -67,11 +71,6 @@ private
|
|
67
71
|
def gem_wrappers
|
68
72
|
@gem_wrappers ||= GemWrappers
|
69
73
|
end
|
70
|
-
|
71
|
-
def executables
|
72
|
-
# do not use map(&:...) - for ruby 1.8.6 compatibility
|
73
|
-
@executables ||= GemWrappers::Specification.installed_gems.map{|gem| gem.executables }.inject{|sum, n| sum + n } || []
|
74
|
-
end
|
75
74
|
end
|
76
75
|
|
77
76
|
require 'gem-wrappers/command/file_exist'
|
data/lib/gem-wrappers/version.rb
CHANGED
@@ -1,4 +1,5 @@
|
|
1
1
|
require 'test_helper'
|
2
|
+
require 'pathname'
|
2
3
|
require 'tempfile'
|
3
4
|
require 'gem-wrappers/command'
|
4
5
|
require 'gem-wrappers/fakes'
|
@@ -8,9 +9,11 @@ describe WrappersCommand do
|
|
8
9
|
WrappersCommand.new
|
9
10
|
end
|
10
11
|
|
12
|
+
let(:gems) { %w[rake ruby] }
|
13
|
+
|
11
14
|
before do
|
12
|
-
@
|
13
|
-
subject.instance_variable_set(:@gem_wrappers, @
|
15
|
+
@fake_wrappers = GemWrappers::Fake.new(gems)
|
16
|
+
subject.instance_variable_set(:@gem_wrappers, @fake_wrappers)
|
14
17
|
$stdout = StringIO.new
|
15
18
|
$stderr = StringIO.new
|
16
19
|
end
|
@@ -36,23 +39,30 @@ describe WrappersCommand do
|
|
36
39
|
end
|
37
40
|
|
38
41
|
it "does show" do
|
39
|
-
subject.options[:args] = ["show"
|
42
|
+
subject.options[:args] = ["show"]
|
40
43
|
subject.execute
|
41
44
|
|
42
45
|
$stderr.string.must_equal("")
|
43
|
-
$stdout.string.
|
44
|
-
#{subject.description.strip}
|
46
|
+
$stdout.string.must_match(%r{\
|
47
|
+
#{Regexp.escape(subject.description.strip)}
|
45
48
|
Wrappers path: /path/to/wrappers
|
46
49
|
Environment file: /path/to/environment
|
47
|
-
Executables: rake
|
48
|
-
|
50
|
+
Executables: rake, ruby
|
51
|
+
})
|
52
|
+
end
|
53
|
+
|
54
|
+
it "does show rake" do
|
55
|
+
subject.options[:args] = ["show", "rake"]
|
56
|
+
subject.execute
|
57
|
+
|
58
|
+
$stderr.string.must_equal("")
|
59
|
+
$stdout.string.must_equal("/path/to/wrappers/rake\n")
|
49
60
|
end
|
50
61
|
|
51
62
|
it "regenerates wrappers" do
|
52
|
-
subject.
|
53
|
-
subject.options[:args] = ['regenerate']
|
63
|
+
subject.options[:args] = %w{regenerate rake}
|
54
64
|
subject.execute
|
55
|
-
@
|
65
|
+
@fake_wrappers.executables.must_equal(%w{rake})
|
56
66
|
end
|
57
67
|
|
58
68
|
describe "script wrappers" do
|
@@ -68,20 +78,15 @@ EXPECTED
|
|
68
78
|
it "generates script wrapper full path" do
|
69
79
|
subject.options[:args] = [@file.path]
|
70
80
|
subject.execute
|
71
|
-
@
|
81
|
+
@fake_wrappers.executables.must_equal([@file.path])
|
72
82
|
end
|
73
83
|
|
74
84
|
it "generates script wrapper relative" do
|
75
85
|
Dir.chdir(File.dirname(@file.path)) do
|
76
86
|
subject.options[:args] = [File.basename(@file.path)]
|
77
87
|
subject.execute
|
78
|
-
@
|
88
|
+
@fake_wrappers.executables.must_equal([Pathname.new(@file.path).realpath.to_s])
|
79
89
|
end
|
80
90
|
end
|
81
91
|
end
|
82
|
-
|
83
|
-
it "finds gem executables" do
|
84
|
-
subject.send(:executables).must_include('rake')
|
85
|
-
end
|
86
|
-
|
87
92
|
end
|
data/test/gem-wrappers/fakes.rb
CHANGED
@@ -34,7 +34,8 @@ module GemWrappers
|
|
34
34
|
end
|
35
35
|
end
|
36
36
|
class Fake
|
37
|
-
def initialize
|
37
|
+
def initialize(gems)
|
38
|
+
@gems = gems
|
38
39
|
@executables = []
|
39
40
|
end
|
40
41
|
def install(executables)
|
@@ -52,5 +53,19 @@ module GemWrappers
|
|
52
53
|
def wrappers_path
|
53
54
|
"/path/to/wrappers"
|
54
55
|
end
|
56
|
+
def wrapper_path(exe)
|
57
|
+
file = File.join(wrappers_path, exe)
|
58
|
+
if @gems.include?(exe)
|
59
|
+
file
|
60
|
+
else
|
61
|
+
raise GemWrappers::NoWrapper, "No wrapper: #{file}"
|
62
|
+
end
|
63
|
+
end
|
64
|
+
def installed_wrappers
|
65
|
+
@gems
|
66
|
+
end
|
67
|
+
def gems_executables
|
68
|
+
@gems
|
69
|
+
end
|
55
70
|
end
|
56
71
|
end
|
data/test/gem-wrappers_test.rb
CHANGED
@@ -72,7 +72,7 @@ GEMRC
|
|
72
72
|
FileUtils.rm_rf(@test_path)
|
73
73
|
end
|
74
74
|
|
75
|
-
it "installas wrappers" do
|
75
|
+
it "installas wrappers and finds wrapper path" do
|
76
76
|
File.exist?(@rake_wrapper).must_equal(false)
|
77
77
|
subject.install(%w{rake})
|
78
78
|
File.exist?(@rake_wrapper ).must_equal(true)
|
@@ -87,6 +87,38 @@ GEMRC
|
|
87
87
|
subject.uninstall(%w{rake})
|
88
88
|
File.exist?(@rake_wrapper ).must_equal(false)
|
89
89
|
end
|
90
|
+
|
91
|
+
it "finds gem executables" do
|
92
|
+
subject.send(:gems_executables).must_include("rake")
|
93
|
+
end
|
94
|
+
|
95
|
+
it "shows rake in executables" do
|
96
|
+
Dir.mkdir(@wrappers_path)
|
97
|
+
File.open(@rake_wrapper, "w") { |f| f.write("") }
|
98
|
+
File.chmod(0755, @rake_wrapper)
|
99
|
+
subject.installed_wrappers.must_equal(["rake"])
|
100
|
+
end
|
101
|
+
|
102
|
+
it "finds rake path" do
|
103
|
+
Dir.mkdir(@wrappers_path)
|
104
|
+
File.open(@rake_wrapper, "w") { |f| f.write("") }
|
105
|
+
File.chmod(0755, @rake_wrapper)
|
106
|
+
subject.wrapper_path("rake").must_equal(@rake_wrapper)
|
107
|
+
end
|
108
|
+
|
109
|
+
it "doesn't find rake path when not executable" do
|
110
|
+
Dir.mkdir(@wrappers_path)
|
111
|
+
File.open(@rake_wrapper, "w") { |f| f.write("") }
|
112
|
+
proc {
|
113
|
+
subject.wrapper_path("rak2e")
|
114
|
+
}.must_raise(GemWrappers::NoWrapper)
|
115
|
+
end
|
116
|
+
|
117
|
+
it "doesn't find rake path when missing" do
|
118
|
+
proc {
|
119
|
+
subject.wrapper_path("rak2e")
|
120
|
+
}.must_raise(GemWrappers::NoWrapper)
|
121
|
+
end
|
90
122
|
end
|
91
123
|
|
92
124
|
end
|
metadata
CHANGED
@@ -1,46 +1,51 @@
|
|
1
|
-
--- !ruby/object:Gem::Specification
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
2
|
name: gem-wrappers
|
3
|
-
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 1.4.0
|
5
5
|
platform: ruby
|
6
|
-
authors:
|
6
|
+
authors:
|
7
7
|
- Michal Papis
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
- !ruby/object:Gem::Dependency
|
11
|
+
date: 2017-09-22 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
15
14
|
name: rake
|
16
|
-
|
17
|
-
|
18
|
-
requirements:
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
19
17
|
- - <
|
20
|
-
- !ruby/object:Gem::Version
|
21
|
-
version:
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '11'
|
22
20
|
type: :development
|
23
|
-
version_requirements: *id001
|
24
|
-
- !ruby/object:Gem::Dependency
|
25
|
-
name: minitest
|
26
21
|
prerelease: false
|
27
|
-
|
28
|
-
requirements:
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - <
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '11'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: minitest
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
29
31
|
- - <
|
30
|
-
- !ruby/object:Gem::Version
|
31
|
-
version:
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '6'
|
32
34
|
type: :development
|
33
|
-
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - <
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '6'
|
34
41
|
description:
|
35
|
-
email:
|
42
|
+
email:
|
36
43
|
- mpapis@gmail.com
|
37
44
|
executables: []
|
38
|
-
|
39
|
-
extensions:
|
45
|
+
extensions:
|
40
46
|
- ext/wrapper_generator/extconf.rb
|
41
47
|
extra_rdoc_files: []
|
42
|
-
|
43
|
-
files:
|
48
|
+
files:
|
44
49
|
- .gitignore
|
45
50
|
- .travis.yml
|
46
51
|
- Changelog.md
|
@@ -66,32 +71,30 @@ files:
|
|
66
71
|
- test/gem-wrappers_test.rb
|
67
72
|
- test/test_helper.rb
|
68
73
|
homepage: https://github.com/rvm/gem-wrappers
|
69
|
-
licenses:
|
74
|
+
licenses:
|
70
75
|
- Apache 2.0
|
71
76
|
metadata: {}
|
72
|
-
|
73
77
|
post_install_message:
|
74
78
|
rdoc_options: []
|
75
|
-
|
76
|
-
require_paths:
|
79
|
+
require_paths:
|
77
80
|
- lib
|
78
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
79
|
-
requirements:
|
80
|
-
-
|
81
|
-
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
81
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
82
|
+
requirements:
|
83
|
+
- - '>='
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: '0'
|
86
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
87
|
+
requirements:
|
88
|
+
- - '>='
|
89
|
+
- !ruby/object:Gem::Version
|
90
|
+
version: '0'
|
87
91
|
requirements: []
|
88
|
-
|
89
92
|
rubyforge_project:
|
90
|
-
rubygems_version: 2.
|
93
|
+
rubygems_version: 2.6.12
|
91
94
|
signing_key:
|
92
95
|
specification_version: 4
|
93
96
|
summary: Create gem wrappers for easy use of gems in cron and other system locations.
|
94
|
-
test_files:
|
97
|
+
test_files:
|
95
98
|
- test/gem-wrappers/command_test.rb
|
96
99
|
- test/gem-wrappers/environment_test.rb
|
97
100
|
- test/gem-wrappers/fakes.rb
|