gem-patch 0.1.1 → 0.1.2
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.
- data/LICENCE +20 -0
- data/README.md +13 -2
- data/README.rdoc +10 -3
- data/lib/rubygems/commands/patch_command.rb +1 -0
- data/lib/rubygems/patcher.rb +31 -13
- data/rakefile.rb +4 -3
- metadata +4 -3
data/LICENCE
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
Copyright (c) Josef Strzibny.
|
2
|
+
|
3
|
+
Permission is hereby granted, free of charge, to any person obtaining
|
4
|
+
a copy of this software and associated documentation files (the
|
5
|
+
'Software'), to deal in the Software without restriction, including
|
6
|
+
without limitation the rights to use, copy, modify, merge, publish,
|
7
|
+
distribute, sublicense, and/or sell copies of the Software, and to
|
8
|
+
permit persons to whom the Software is furnished to do so, subject to
|
9
|
+
the following conditions:
|
10
|
+
|
11
|
+
The above copyright notice and this permission notice shall be
|
12
|
+
included in all copies or substantial portions of the Software.
|
13
|
+
|
14
|
+
THE SOFTWARE IS PROVIDED 'AS IS', WITHOUT WARRANTY OF ANY KIND,
|
15
|
+
EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
16
|
+
MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT.
|
17
|
+
IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY
|
18
|
+
CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT,
|
19
|
+
TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN CONNECTION WITH THE
|
20
|
+
SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
data/README.md
CHANGED
@@ -6,13 +6,24 @@ A RubyGems plugin that patches gems.
|
|
6
6
|
|
7
7
|
`gem-patch` is a RubyGems plugin that helps to patch gems without manually opening and rebuilding them. It opens a given .gem file, extracts it, patches it with system `patch` command, clones its spec, updates the file list and builds the patched gem.
|
8
8
|
|
9
|
+
## Installation
|
10
|
+
|
11
|
+
Run:
|
12
|
+
`gem install gem-patch`
|
13
|
+
|
9
14
|
## Usage
|
10
15
|
|
11
16
|
`gem patch [options] name-version.gem PATCH [PATCH ...]`
|
12
17
|
|
13
|
-
|
14
|
-
|
18
|
+
Options:
|
19
|
+
|
20
|
+
`-pNUMBER` or `--strip=NUMBER` sets the file name strip count to NUMBER (same options as for `patch` command on Linux machines).
|
21
|
+
`--verbose` prints additional info and STDOUT from `patch` command
|
15
22
|
|
16
23
|
## Requirements
|
17
24
|
|
18
25
|
This version is build for both RubyGems 1.8 and RubyGems 2.0.
|
26
|
+
|
27
|
+
## Copyright
|
28
|
+
|
29
|
+
See LICENCE
|
data/README.rdoc
CHANGED
@@ -6,13 +6,20 @@ A RubyGems plugin that patches gems.
|
|
6
6
|
|
7
7
|
`gem-patch` is a RubyGems plugin that helps to patch gems without manually opening and rebuilding them. It opens a given .gem file, extracts it, patches it with system `patch` command, clones its spec, updates the file list and builds the patched gem.
|
8
8
|
|
9
|
+
== Installation
|
10
|
+
|
11
|
+
Run:
|
12
|
+
`gem install gem-patch`
|
13
|
+
|
9
14
|
== Usage
|
10
15
|
|
11
16
|
`gem patch [options] name-version.gem PATCH [PATCH ...]`
|
12
17
|
|
13
|
-
|
14
|
-
|
18
|
+
Options:
|
19
|
+
|
20
|
+
`-pNUMBER` or `--strip=NUMBER` sets the file name strip count to NUMBER (same options as for `patch` command on Linux machines).
|
21
|
+
`--verbose` prints additional info and STDOUT from `patch` command
|
15
22
|
|
16
23
|
== Requirements
|
17
24
|
|
18
|
-
This version is build for RubyGems 2.0.a, a branch for RubyGems 1.8 is also available.
|
25
|
+
This version is build for RubyGems 2.0.a, a branch for RubyGems 1.8 is also available.
|
data/lib/rubygems/patcher.rb
CHANGED
@@ -25,6 +25,8 @@ class Gem::Patcher
|
|
25
25
|
# Patch the gem, move the new patched gem to the working directory and return the path
|
26
26
|
|
27
27
|
def patch_with(patches, strip_number)
|
28
|
+
@output = []
|
29
|
+
|
28
30
|
check_patch_command_is_installed
|
29
31
|
extract_gem
|
30
32
|
|
@@ -36,15 +38,11 @@ class Gem::Patcher
|
|
36
38
|
|
37
39
|
build_patched_gem
|
38
40
|
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
File.open(File.join(@output_dir, @package.spec.file_name), 'w') do |f|
|
43
|
-
f.write gem_file
|
44
|
-
end
|
41
|
+
new_gem_path = File.join(@output_dir, @package.spec.file_name)
|
42
|
+
FileUtils.mv((File.join @target_dir, @package.spec.file_name), new_gem_path)
|
45
43
|
|
46
44
|
# Return the path to the patched gem
|
47
|
-
|
45
|
+
new_gem_path
|
48
46
|
end
|
49
47
|
|
50
48
|
def apply_patch(patch, strip_number)
|
@@ -53,14 +51,32 @@ class Gem::Patcher
|
|
53
51
|
|
54
52
|
# Apply the patch by calling 'patch -pNUMBER < patch'
|
55
53
|
Dir.chdir @target_dir do
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
info
|
54
|
+
IO.popen("patch --verbose -p#{strip_number} < #{patch_path} 2>&1") do |out|
|
55
|
+
std = out.readlines
|
56
|
+
out.close
|
57
|
+
info std
|
58
|
+
|
59
|
+
unless $?.nil?
|
60
|
+
if $?.exitstatus == 0
|
61
|
+
@output << "Succesfully patched with #{patch}"
|
62
|
+
else
|
63
|
+
@output << "Error: Unable to patch with #{patch}."
|
64
|
+
|
65
|
+
unless Gem.configuration.really_verbose
|
66
|
+
@output << "Run gem patch with --verbose option to swich to verbose mode."
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
60
70
|
end
|
61
71
|
end
|
62
72
|
end
|
63
73
|
|
74
|
+
def print_results
|
75
|
+
@output.each do |msg|
|
76
|
+
say msg
|
77
|
+
end
|
78
|
+
end
|
79
|
+
|
64
80
|
private
|
65
81
|
|
66
82
|
def extract_gem
|
@@ -83,7 +99,7 @@ class Gem::Patcher
|
|
83
99
|
end
|
84
100
|
|
85
101
|
def info(msg)
|
86
|
-
say msg if Gem.configuration.
|
102
|
+
say msg if Gem.configuration.really_verbose
|
87
103
|
end
|
88
104
|
|
89
105
|
def files_in_gem
|
@@ -121,7 +137,9 @@ class Gem::Patcher
|
|
121
137
|
end
|
122
138
|
|
123
139
|
def check_patch_command_is_installed
|
124
|
-
|
140
|
+
result = IO.popen('patch --version')
|
141
|
+
|
142
|
+
unless /^patch\s\d\.\d\./.match result.readlines[0]
|
125
143
|
raise PatchCommandMissing, 'Calling `patch` command failed. Do you have it installed?'
|
126
144
|
end
|
127
145
|
end
|
data/rakefile.rb
CHANGED
@@ -4,7 +4,7 @@ require 'rdoc/task'
|
|
4
4
|
|
5
5
|
gemspec = Gem::Specification.new do |s|
|
6
6
|
s.name = "gem-patch"
|
7
|
-
s.version = "0.1.
|
7
|
+
s.version = "0.1.2"
|
8
8
|
s.platform = Gem::Platform::RUBY
|
9
9
|
s.summary = "RubyGems plugin for patching gems."
|
10
10
|
s.description = <<-EOF
|
@@ -12,12 +12,13 @@ gemspec = Gem::Specification.new do |s|
|
|
12
12
|
It opens a given .gem file, extracts it, patches it with system `patch` command,
|
13
13
|
clones its spec, updates the file list and builds the patched gem.
|
14
14
|
EOF
|
15
|
+
s.homepage = "http://github.com/strzibny/gem-patch"
|
15
16
|
s.licenses = ["MIT"]
|
16
17
|
s.author = "Josef Stribny"
|
17
18
|
s.email = "jstribny@redhat.com"
|
18
19
|
s.required_ruby_version = ">= 1.8.7"
|
19
20
|
s.required_rubygems_version = ">= 1.8.0"
|
20
|
-
s.files = FileList["README.md", "README.rdoc", "rakefile.rb",
|
21
|
+
s.files = FileList["README.md", "README.rdoc", "LICENCE", "rakefile.rb",
|
21
22
|
"lib/**/*.rb", "test/**/test*.rb"]
|
22
23
|
end
|
23
24
|
|
@@ -35,4 +36,4 @@ Rake::TestTask.new('test') do |t|
|
|
35
36
|
t.verbose = true
|
36
37
|
end
|
37
38
|
|
38
|
-
task :default => [:test]
|
39
|
+
task :default => [:test]
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: gem-patch
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.1.
|
4
|
+
version: 0.1.2
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2012-10-
|
12
|
+
date: 2012-10-09 00:00:00.000000000 Z
|
13
13
|
dependencies: []
|
14
14
|
description: ! " `gem-patch` is a RubyGems plugin that helps to
|
15
15
|
patch gems without manually opening and rebuilding them.\n It
|
@@ -23,6 +23,7 @@ extra_rdoc_files: []
|
|
23
23
|
files:
|
24
24
|
- README.md
|
25
25
|
- README.rdoc
|
26
|
+
- LICENCE
|
26
27
|
- rakefile.rb
|
27
28
|
- lib/rubygems_plugin.rb
|
28
29
|
- lib/rubygems/package-1.8.rb
|
@@ -30,7 +31,7 @@ files:
|
|
30
31
|
- lib/rubygems/commands/patch_command.rb
|
31
32
|
- test/rubygems/test_gem_patch.rb
|
32
33
|
- test/rubygems/test_gem_commands_patch_command.rb
|
33
|
-
homepage:
|
34
|
+
homepage: http://github.com/strzibny/gem-patch
|
34
35
|
licenses:
|
35
36
|
- MIT
|
36
37
|
post_install_message:
|