gem-wrappers 1.2.7 → 1.3.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 +5 -5
- data/.travis.yml +3 -1
- data/Changelog.md +22 -0
- data/gem-wrappers.gemspec +2 -2
- data/lib/gem-wrappers/environment.rb +1 -1
- data/lib/gem-wrappers/installer.rb +29 -7
- data/lib/gem-wrappers/version.rb +1 -1
- data/test/gem-wrappers/installer_test.rb +47 -4
- metadata +17 -19
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
SHA1:
|
3
|
-
data.tar.gz: e3c4b6e90e5eb8b635169e54b0c976962c082222
|
4
|
-
metadata.gz: 38d025a4910fed667ee8de884032a87729e549e0
|
5
2
|
SHA512:
|
6
|
-
|
7
|
-
|
3
|
+
metadata.gz: f04d42e70ec2f1b65a3167be83d17b22f08e7d419a4c8c4675140df95cee9f382dbc9a3537d64598029f3b0048e9fe2965ee692141844eb016d351147b656a83
|
4
|
+
data.tar.gz: 9b8d907ec0e80f40330183cf43f8f3c73aeffe51d80c1d94cc9195ba6c7e1d66c9e7ffb712bfb03d0c8b5324341d0ce15e4b12a62fe899e4982721fcc3f9387a
|
5
|
+
SHA1:
|
6
|
+
metadata.gz: 3da6f9a3645a2a752f684fa30ba1e514725505ce
|
7
|
+
data.tar.gz: c9c8d345caa1e083d3da736731ef61e0dc47291a
|
data/.travis.yml
CHANGED
data/Changelog.md
CHANGED
@@ -1,5 +1,27 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
+
## 1.3.0
|
4
|
+
date: 2017-07-08
|
5
|
+
|
6
|
+
- add check if target files actually exist and are executable, fix #9
|
7
|
+
- silence ivar warning in rubygems test suite, fix #7
|
8
|
+
|
9
|
+
## 1.2.7
|
10
|
+
date: 2014-10-10
|
11
|
+
|
12
|
+
- improved command handling
|
13
|
+
|
14
|
+
## 1.2.6.1
|
15
|
+
date: 2014-10-10
|
16
|
+
|
17
|
+
- improved output of listing executables
|
18
|
+
|
19
|
+
## 1.2.6
|
20
|
+
date: 2014-10-10
|
21
|
+
|
22
|
+
- show list of executables
|
23
|
+
- show info when `$GEM_WRAPPERS_DEBUG` is set
|
24
|
+
|
3
25
|
## 1.2.5
|
4
26
|
date: 2014-05-27
|
5
27
|
|
data/gem-wrappers.gemspec
CHANGED
@@ -14,7 +14,7 @@ Gem::Specification.new do |s|
|
|
14
14
|
s.extensions = %w( ext/wrapper_generator/extconf.rb )
|
15
15
|
s.files = `git ls-files`.split("\n")
|
16
16
|
s.test_files = `git ls-files -- {test,spec,features}/*`.split("\n")
|
17
|
-
s.add_development_dependency("rake")
|
18
|
-
s.add_development_dependency("minitest")
|
17
|
+
s.add_development_dependency("rake", "<11")
|
18
|
+
s.add_development_dependency("minitest", "<6")
|
19
19
|
# s.add_development_dependency("smf-gem")
|
20
20
|
end
|
@@ -22,7 +22,12 @@ module GemWrappers
|
|
22
22
|
def ensure
|
23
23
|
FileUtils.mkdir_p(wrappers_path) unless File.exist?(wrappers_path)
|
24
24
|
# exception based on Gem::Installer.generate_bin
|
25
|
-
|
25
|
+
unless File.writable?(wrappers_path)
|
26
|
+
raise Gem::FilePermissionError.new(wrappers_path)
|
27
|
+
end
|
28
|
+
unless @environment_file
|
29
|
+
raise "Missing environment file for initialize!"
|
30
|
+
end
|
26
31
|
end
|
27
32
|
|
28
33
|
def uninstall(executable)
|
@@ -31,19 +36,36 @@ module GemWrappers
|
|
31
36
|
end
|
32
37
|
|
33
38
|
def install(executable)
|
34
|
-
|
39
|
+
target_path = find_executable_path(executable)
|
40
|
+
unless target_path
|
41
|
+
warn "GemWrappers: Can not wrap missing file: #{executable}"
|
42
|
+
return
|
43
|
+
end
|
44
|
+
unless File.executable?(target_path)
|
45
|
+
warn "GemWrappers: Can not wrap not executable file: #{target_path}"
|
46
|
+
return
|
47
|
+
end
|
35
48
|
@executable = executable
|
36
49
|
content = ERB.new(template).result(binding)
|
37
50
|
install_file(executable, content)
|
38
|
-
|
51
|
+
install_to_formatted(executable, content)
|
52
|
+
end
|
53
|
+
|
54
|
+
def find_executable_path(executable)
|
55
|
+
return executable if File.exist?(executable)
|
56
|
+
ENV['PATH'].split(File::PATH_SEPARATOR).each { |dir|
|
57
|
+
full_path = File.join(dir, executable)
|
58
|
+
return full_path if File.exist?(full_path)
|
59
|
+
}
|
60
|
+
nil
|
39
61
|
end
|
40
62
|
|
41
|
-
def
|
42
|
-
|
63
|
+
def install_to_formatted(executable, content)
|
64
|
+
formatted_executable = @executable_format % executable
|
43
65
|
if
|
44
|
-
|
66
|
+
formatted_executable != executable
|
45
67
|
then
|
46
|
-
install_file(
|
68
|
+
install_file(formatted_executable, content)
|
47
69
|
end
|
48
70
|
end
|
49
71
|
|
data/lib/gem-wrappers/version.rb
CHANGED
@@ -89,14 +89,52 @@ describe GemWrappers::Installer do
|
|
89
89
|
end
|
90
90
|
end
|
91
91
|
|
92
|
+
it "does not creates wrapper if target missing" do
|
93
|
+
subject.instance_variable_set(:@wrappers_path, @test_path)
|
94
|
+
script_path = File.join(subject.wrappers_path, "example", "test.ksh")
|
95
|
+
full_path = File.join(subject.wrappers_path, "test.ksh")
|
96
|
+
File.exist?(full_path).must_equal(false)
|
97
|
+
subject.ensure
|
98
|
+
mock_method = MiniTest::Mock.new
|
99
|
+
mock_method.expect :call, nil, ["GemWrappers: Can not wrap missing file: #{script_path}"]
|
100
|
+
subject.stub(:warn, mock_method) do
|
101
|
+
subject.install(script_path)
|
102
|
+
end
|
103
|
+
mock_method.verify
|
104
|
+
File.exist?(full_path).must_equal(false)
|
105
|
+
end
|
106
|
+
|
107
|
+
it "does not creates wrapper if file not executable" do
|
108
|
+
subject.instance_variable_set(:@wrappers_path, @test_path)
|
109
|
+
scripts_path = File.join(subject.wrappers_path, "example")
|
110
|
+
FileUtils.mkdir_p(scripts_path)
|
111
|
+
script_path = File.join(scripts_path, "test.sh")
|
112
|
+
FileUtils.mkdir_p(File.join(subject.wrappers_path, "example"))
|
113
|
+
File.open(script_path, "w") do |file|
|
114
|
+
file.write("echo test")
|
115
|
+
end
|
116
|
+
full_path = File.join(subject.wrappers_path, "test.sh")
|
117
|
+
File.exist?(full_path).must_equal(false)
|
118
|
+
subject.ensure
|
119
|
+
mock_method = MiniTest::Mock.new
|
120
|
+
mock_method.expect :call, nil, ["GemWrappers: Can not wrap not executable file: #{script_path}"]
|
121
|
+
subject.stub(:warn, mock_method) do
|
122
|
+
subject.install(script_path)
|
123
|
+
end
|
124
|
+
mock_method.verify
|
125
|
+
File.exist?(full_path).must_equal(false)
|
126
|
+
end
|
92
127
|
|
93
128
|
it "creates shell script wrapper" do
|
94
129
|
subject.instance_variable_set(:@wrappers_path, @test_path)
|
95
|
-
|
130
|
+
scripts_path = File.join(subject.wrappers_path, "example")
|
131
|
+
FileUtils.mkdir_p(scripts_path)
|
132
|
+
script_path = File.join(scripts_path, "test.sh")
|
96
133
|
FileUtils.mkdir_p(File.join(subject.wrappers_path, "example"))
|
97
134
|
File.open(script_path, "w") do |file|
|
98
135
|
file.write("echo test")
|
99
136
|
end
|
137
|
+
File.chmod(755, script_path)
|
100
138
|
full_path = File.join(subject.wrappers_path, "test.sh")
|
101
139
|
File.exist?(full_path).must_equal(false)
|
102
140
|
subject.ensure
|
@@ -108,11 +146,15 @@ describe GemWrappers::Installer do
|
|
108
146
|
|
109
147
|
it "creates ruby script wrapper" do
|
110
148
|
subject.instance_variable_set(:@wrappers_path, @test_path)
|
111
|
-
|
112
|
-
FileUtils.mkdir_p(
|
113
|
-
File.
|
149
|
+
scripts_path = File.join(subject.wrappers_path, "example")
|
150
|
+
FileUtils.mkdir_p(scripts_path)
|
151
|
+
script_path = File.join(scripts_path, "test.rb")
|
152
|
+
File.open(script_path, "a") do |file|
|
114
153
|
file.write("puts :test")
|
115
154
|
end
|
155
|
+
File.chmod(755, script_path)
|
156
|
+
old_path = ENV['PATH']
|
157
|
+
ENV['PATH'] += File::PATH_SEPARATOR + scripts_path
|
116
158
|
full_path = File.join(subject.wrappers_path, "test.rb")
|
117
159
|
File.exist?(full_path).must_equal(false)
|
118
160
|
subject.ensure
|
@@ -121,6 +163,7 @@ describe GemWrappers::Installer do
|
|
121
163
|
file.read.must_equal(format_content("ruby #{script_path}"))
|
122
164
|
end
|
123
165
|
File.executable?(full_path).must_equal(true)
|
166
|
+
ENV['PATH'] = old_path
|
124
167
|
end
|
125
168
|
|
126
169
|
it "removes wrapper" do
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gem-wrappers
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.
|
4
|
+
version: 1.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Michal Papis
|
@@ -9,27 +9,28 @@ autorequire:
|
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
11
|
|
12
|
-
date:
|
12
|
+
date: 2017-07-08 00:00:00 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: rake
|
16
16
|
prerelease: false
|
17
17
|
requirement: &id001 !ruby/object:Gem::Requirement
|
18
18
|
requirements:
|
19
|
-
-
|
20
|
-
- ">="
|
19
|
+
- - <
|
21
20
|
- !ruby/object:Gem::Version
|
22
|
-
version: "
|
21
|
+
version: "11"
|
23
22
|
type: :development
|
24
23
|
version_requirements: *id001
|
25
24
|
- !ruby/object:Gem::Dependency
|
26
25
|
name: minitest
|
27
26
|
prerelease: false
|
28
|
-
requirement: &
|
27
|
+
requirement: &id002 !ruby/object:Gem::Requirement
|
29
28
|
requirements:
|
30
|
-
-
|
29
|
+
- - <
|
30
|
+
- !ruby/object:Gem::Version
|
31
|
+
version: "6"
|
31
32
|
type: :development
|
32
|
-
version_requirements: *
|
33
|
+
version_requirements: *id002
|
33
34
|
description:
|
34
35
|
email:
|
35
36
|
- mpapis@gmail.com
|
@@ -76,22 +77,19 @@ require_paths:
|
|
76
77
|
- lib
|
77
78
|
required_ruby_version: !ruby/object:Gem::Requirement
|
78
79
|
requirements:
|
79
|
-
-
|
80
|
+
- &id003
|
81
|
+
- ">="
|
82
|
+
- !ruby/object:Gem::Version
|
83
|
+
version: "0"
|
80
84
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
81
85
|
requirements:
|
82
|
-
- *
|
86
|
+
- *id003
|
83
87
|
requirements: []
|
84
88
|
|
85
89
|
rubyforge_project:
|
86
|
-
rubygems_version: 2.0.
|
90
|
+
rubygems_version: 2.0.17
|
87
91
|
signing_key:
|
88
92
|
specification_version: 4
|
89
93
|
summary: Create gem wrappers for easy use of gems in cron and other system locations.
|
90
|
-
test_files:
|
91
|
-
|
92
|
-
- test/gem-wrappers/environment_test.rb
|
93
|
-
- test/gem-wrappers/fakes.rb
|
94
|
-
- test/gem-wrappers/installer_test.rb
|
95
|
-
- test/gem-wrappers/specification_and_version_test.rb
|
96
|
-
- test/gem-wrappers_test.rb
|
97
|
-
- test/test_helper.rb
|
94
|
+
test_files: []
|
95
|
+
|