pedump 0.5.0 → 0.5.1
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 -0
- data/Gemfile +3 -9
- data/Gemfile.lock +23 -24
- data/Rakefile +3 -72
- data/VERSION +1 -1
- data/lib/pedump.rb +9 -4
- data/lib/pedump/loader.rb +1 -1
- data/lib/pedump/loader/minidump.rb +66 -17
- data/lib/pedump/version.rb +1 -1
- data/pedump.gemspec +22 -132
- metadata +24 -164
- data/.document +0 -5
- data/.rspec +0 -1
- data/.travis.yml +0 -4
- data/samples/bad/68.exe +0 -0
- data/samples/bad/data_dir_15_entries.exe +0 -0
- data/spec/65535sects_spec.rb +0 -8
- data/spec/bad_imports_spec.rb +0 -20
- data/spec/bad_samples_spec.rb +0 -13
- data/spec/composite_io_spec.rb +0 -122
- data/spec/data/calc.exe_sections.yml +0 -49
- data/spec/data/data_dir_15_entries.exe_sections.yml +0 -95
- data/spec/dllord_spec.rb +0 -21
- data/spec/foldedhdr_spec.rb +0 -28
- data/spec/imports_badterm_spec.rb +0 -52
- data/spec/imports_vterm_spec.rb +0 -52
- data/spec/loader/names_spec.rb +0 -24
- data/spec/loader/va_spec.rb +0 -44
- data/spec/manyimportsW7_spec.rb +0 -22
- data/spec/ne_spec.rb +0 -125
- data/spec/packer_spec.rb +0 -17
- data/spec/pe_spec.rb +0 -67
- data/spec/pedump_spec.rb +0 -19
- data/spec/resource_spec.rb +0 -13
- data/spec/sections_spec.rb +0 -11
- data/spec/sig_all_packers_spec.rb +0 -24
- data/spec/sig_spec.rb +0 -68
- data/spec/spec_helper.rb +0 -24
- data/spec/support/samples.rb +0 -24
- data/spec/unpackers/aspack_spec.rb +0 -69
- data/spec/unpackers/find_spec.rb +0 -21
- data/spec/virtsectblXP_spec.rb +0 -12
- data/tmp/.keep +0 -0
checksums.yaml
ADDED
@@ -0,0 +1,7 @@
|
|
1
|
+
---
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: b7032e6e832ba6c7fead77e245952396e8e28f42
|
4
|
+
data.tar.gz: 35bb50e4f1095127491dfe2cf0f902588afd8799
|
5
|
+
SHA512:
|
6
|
+
metadata.gz: 70050e12128d7068566db6aec580ebc79066134b16e38538747423bf2a52409adcb2564692463497fbe33906741e0de3d2843571ad613b17cad97d08cae5bea8
|
7
|
+
data.tar.gz: 03ad91ef9cdf5554458ffe2c50ef7ceb2ec79b6368e48e2f96b15c6f4536b82f894edafc52a01bf1b44755229ff282f6321b6db520990721901166fa0fe3541a
|
data/Gemfile
CHANGED
@@ -1,20 +1,14 @@
|
|
1
1
|
source "http://rubygems.org"
|
2
|
-
|
3
|
-
|
4
|
-
# gem "activesupport", ">= 2.3.5"
|
5
|
-
gem "multipart-post", "~> 1.1.4"
|
2
|
+
|
3
|
+
gem "multipart-post", "~> 2.0.0"
|
6
4
|
gem "progressbar"
|
7
5
|
gem "awesome_print"
|
8
6
|
gem "iostruct", ">= 0.0.4"
|
9
7
|
gem "zhexdump", ">= 0.0.2"
|
10
8
|
|
11
|
-
# Add dependencies to develop your gem here.
|
12
|
-
# Include everything needed to run rake, tests, features, etc.
|
13
9
|
group :development do
|
14
10
|
gem "rspec"
|
15
11
|
gem "bundler"
|
16
|
-
gem "jeweler"
|
17
|
-
# gem "rcov", ">= 0"
|
18
12
|
gem "what_methods"
|
19
|
-
|
13
|
+
gem "rake"
|
20
14
|
end
|
data/Gemfile.lock
CHANGED
@@ -1,29 +1,25 @@
|
|
1
1
|
GEM
|
2
2
|
remote: http://rubygems.org/
|
3
3
|
specs:
|
4
|
-
awesome_print (1.
|
5
|
-
diff-lcs (1.
|
6
|
-
git (1.2.5)
|
4
|
+
awesome_print (1.7.0)
|
5
|
+
diff-lcs (1.2.5)
|
7
6
|
iostruct (0.0.4)
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
rspec-
|
23
|
-
rspec-
|
24
|
-
rspec-expectations (2.12.0)
|
25
|
-
diff-lcs (~> 1.1.3)
|
26
|
-
rspec-mocks (2.12.0)
|
7
|
+
multipart-post (2.0.0)
|
8
|
+
progressbar (0.21.0)
|
9
|
+
rake (10.4.2)
|
10
|
+
rspec (3.5.0)
|
11
|
+
rspec-core (~> 3.5.0)
|
12
|
+
rspec-expectations (~> 3.5.0)
|
13
|
+
rspec-mocks (~> 3.5.0)
|
14
|
+
rspec-core (3.5.3)
|
15
|
+
rspec-support (~> 3.5.0)
|
16
|
+
rspec-expectations (3.5.0)
|
17
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
18
|
+
rspec-support (~> 3.5.0)
|
19
|
+
rspec-mocks (3.5.0)
|
20
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
21
|
+
rspec-support (~> 3.5.0)
|
22
|
+
rspec-support (3.5.0)
|
27
23
|
what_methods (1.0.1)
|
28
24
|
zhexdump (0.0.2)
|
29
25
|
|
@@ -34,9 +30,12 @@ DEPENDENCIES
|
|
34
30
|
awesome_print
|
35
31
|
bundler
|
36
32
|
iostruct (>= 0.0.4)
|
37
|
-
|
38
|
-
multipart-post (~> 1.1.4)
|
33
|
+
multipart-post (~> 2.0.0)
|
39
34
|
progressbar
|
35
|
+
rake
|
40
36
|
rspec
|
41
37
|
what_methods
|
42
38
|
zhexdump (>= 0.0.2)
|
39
|
+
|
40
|
+
BUNDLED WITH
|
41
|
+
1.12.5
|
data/Rakefile
CHANGED
@@ -1,81 +1,12 @@
|
|
1
|
-
# encoding: utf-8
|
2
|
-
|
3
|
-
require 'rubygems'
|
4
1
|
require 'bundler'
|
5
|
-
|
6
|
-
Bundler.setup(:default, :development)
|
7
|
-
rescue Bundler::BundlerError => e
|
8
|
-
$stderr.puts e.message
|
9
|
-
$stderr.puts "Run `bundle install` to install missing gems"
|
10
|
-
exit e.status_code
|
11
|
-
end
|
12
|
-
require 'rake'
|
13
|
-
|
14
|
-
require 'jeweler'
|
15
|
-
Jeweler::Tasks.new do |gem|
|
16
|
-
# gem is a Gem::Specification... see http://docs.rubygems.org/read/chapter/20 for more options
|
17
|
-
gem.name = "pedump"
|
18
|
-
gem.homepage = "http://github.com/zed-0xff/pedump"
|
19
|
-
gem.license = "MIT"
|
20
|
-
gem.summary = %Q{dump win32 PE executable files with a pure ruby}
|
21
|
-
gem.description = %Q{dump headers, sections, extract resources of win32 PE exe,dll,etc}
|
22
|
-
gem.email = "zed.0xff@gmail.com"
|
23
|
-
gem.authors = ["Andrey \"Zed\" Zaikin"]
|
24
|
-
gem.executables = %w'pedump'
|
25
|
-
gem.files.include "lib/**/*.rb"
|
26
|
-
gem.files.include "data/*.bin"
|
27
|
-
gem.files.include "data/*.txt"
|
28
|
-
|
29
|
-
gem.files.exclude "samples/*", "README.md.tpl"
|
30
|
-
gem.extra_rdoc_files.exclude "README.md.tpl"
|
31
|
-
end
|
32
|
-
Jeweler::RubygemsDotOrgTasks.new
|
33
|
-
|
34
|
-
require 'rspec/core'
|
2
|
+
require 'bundler/gem_tasks'
|
35
3
|
require 'rspec/core/rake_task'
|
36
|
-
RSpec::Core::RakeTask.new(:spec) do |spec|
|
37
|
-
spec.pattern = FileList['spec/**/*_spec.rb']
|
38
|
-
end
|
39
4
|
|
40
|
-
|
41
|
-
|
42
|
-
spec.rcov = true
|
43
|
-
end
|
5
|
+
desc "run specs"
|
6
|
+
RSpec::Core::RakeTask.new
|
44
7
|
|
45
8
|
task :default => :spec
|
46
9
|
|
47
|
-
#require 'rake/rdoctask'
|
48
|
-
#Rake::RDocTask.new do |rdoc|
|
49
|
-
# version = File.exist?('VERSION') ? File.read('VERSION') : ""
|
50
|
-
#
|
51
|
-
# rdoc.rdoc_dir = 'rdoc'
|
52
|
-
# rdoc.title = "pedump #{version}"
|
53
|
-
# rdoc.rdoc_files.include('README*')
|
54
|
-
# rdoc.rdoc_files.include('lib/**/*.rb')
|
55
|
-
#end
|
56
|
-
|
57
|
-
class Jeweler::Commands::Version::Base
|
58
|
-
alias :commit_version_old :commit_version
|
59
|
-
def commit_version
|
60
|
-
code = <<-EOF
|
61
|
-
class PEdump
|
62
|
-
module Version
|
63
|
-
MAJOR = #{version_helper.major}
|
64
|
-
MINOR = #{version_helper.minor}
|
65
|
-
PATCH = #{version_helper.patch}
|
66
|
-
BUILD = nil
|
67
|
-
|
68
|
-
STRING = [MAJOR, MINOR, PATCH, BUILD].compact.join('.')
|
69
|
-
end
|
70
|
-
end
|
71
|
-
EOF
|
72
|
-
vfile = working_subdir.join("lib/pedump/version.rb")
|
73
|
-
File.open(vfile,"w"){ |f| f << code }
|
74
|
-
self.repo.add vfile if self.repo
|
75
|
-
commit_version_old
|
76
|
-
end
|
77
|
-
end
|
78
|
-
|
79
10
|
namespace :test do
|
80
11
|
desc "test on all files in given path"
|
81
12
|
task :all_files do
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.5.
|
1
|
+
0.5.1
|
data/lib/pedump.rb
CHANGED
@@ -474,9 +474,10 @@ class PEdump
|
|
474
474
|
:first_thunk
|
475
475
|
|
476
476
|
class ImportedFunction < Struct.new(:hint, :name, :ordinal, :va, :module_name)
|
477
|
-
|
478
|
-
|
479
|
-
|
477
|
+
def == x
|
478
|
+
self.hint == x.hint && self.name == x.name && self.ordinal == x.ordinal &&
|
479
|
+
self.module_name == x.module_name
|
480
|
+
end
|
480
481
|
# def <=> x
|
481
482
|
# self.to_a[0..-2] <=> x.to_a[0..-2]
|
482
483
|
# end
|
@@ -626,7 +627,11 @@ class PEdump
|
|
626
627
|
:name, :entry_points, :names, :name_ordinals, :functions,
|
627
628
|
:description # NE only
|
628
629
|
|
629
|
-
ExportedFunction
|
630
|
+
class ExportedFunction < Struct.new :name, :ord, :va, :file_offset
|
631
|
+
def ordinal
|
632
|
+
self.ord
|
633
|
+
end
|
634
|
+
end
|
630
635
|
|
631
636
|
def exports f=@io
|
632
637
|
if pe(f)
|
data/lib/pedump/loader.rb
CHANGED
@@ -263,7 +263,7 @@ class PEdump::Loader
|
|
263
263
|
@pedump.imports.each do |iid| # Image Import Descriptor
|
264
264
|
va = iid.FirstThunk + @image_base
|
265
265
|
(Array(iid.original_first_thunk) + Array(iid.first_thunk)).uniq.each do |func|
|
266
|
-
name = func.name || "
|
266
|
+
name = "__imp_" + (func.name || "#{func.ordinal}")
|
267
267
|
@names[va] = name
|
268
268
|
va += 4
|
269
269
|
end
|
@@ -53,6 +53,24 @@ class PEdump
|
|
53
53
|
end
|
54
54
|
end
|
55
55
|
|
56
|
+
MINIDUMP_MEMORY_DESCRIPTOR = IOStruct.new 'QLL',
|
57
|
+
:StartOfMemoryRange,
|
58
|
+
:DataSize,
|
59
|
+
:Rva
|
60
|
+
|
61
|
+
class MINIDUMP_MEMORY_LIST < IOStruct.new 'L',
|
62
|
+
:NumberOfMemoryRanges,
|
63
|
+
:MemoryRanges
|
64
|
+
|
65
|
+
def self.read io
|
66
|
+
r = super
|
67
|
+
r.MemoryRanges = r.NumberOfMemoryRanges.times.map{ MINIDUMP_MEMORY_DESCRIPTOR.read(io) }
|
68
|
+
r
|
69
|
+
end
|
70
|
+
|
71
|
+
def entries; self.MemoryRanges; end
|
72
|
+
end
|
73
|
+
|
56
74
|
MINIDUMP_MEMORY_DESCRIPTOR64 = IOStruct.new 'QQ',
|
57
75
|
:StartOfMemoryRange,
|
58
76
|
:DataSize
|
@@ -78,7 +96,7 @@ class PEdump
|
|
78
96
|
2 => :ReservedStream1,
|
79
97
|
3 => :ThreadListStream,
|
80
98
|
4 => :ModuleListStream,
|
81
|
-
5 => :MemoryListStream,
|
99
|
+
5 => :MemoryListStream, # MINIDUMP_MEMORY_LIST
|
82
100
|
6 => :ExceptionStream,
|
83
101
|
7 => :SystemInfoStream,
|
84
102
|
8 => :ThreadExListStream,
|
@@ -125,6 +143,14 @@ class PEdump
|
|
125
143
|
end
|
126
144
|
|
127
145
|
def memory_list
|
146
|
+
# MINIDUMP_MEMORY_LIST
|
147
|
+
stream = streams.find{ |s| s.StreamType == 5 }
|
148
|
+
return nil unless stream
|
149
|
+
io.seek stream.Location.Rva
|
150
|
+
MINIDUMP_MEMORY_LIST.read io
|
151
|
+
end
|
152
|
+
|
153
|
+
def memory64_list
|
128
154
|
# MINIDUMP_MEMORY64_LIST
|
129
155
|
stream = streams.find{ |s| s.StreamType == 9 }
|
130
156
|
return nil unless stream
|
@@ -136,27 +162,50 @@ class PEdump
|
|
136
162
|
|
137
163
|
# set options[:merge] = true to merge adjacent memory ranges
|
138
164
|
def memory_ranges options = {}
|
139
|
-
|
140
|
-
|
141
|
-
|
142
|
-
|
143
|
-
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
165
|
+
if memory64_list
|
166
|
+
ml = memory64_list
|
167
|
+
file_offset = ml.BaseRva
|
168
|
+
r = []
|
169
|
+
if options[:merge]
|
170
|
+
ml.entries.each do |x|
|
171
|
+
if r.last && r.last.va + r.last.size == x.StartOfMemoryRange
|
172
|
+
# if section VA == prev_section.VA + prev_section.SIZE
|
173
|
+
# then just increase the size of previous section
|
174
|
+
r.last.size += x.DataSize
|
175
|
+
else
|
176
|
+
r << MemoryRange.new( file_offset, x.StartOfMemoryRange, x.DataSize )
|
177
|
+
end
|
178
|
+
file_offset += x.DataSize
|
179
|
+
end
|
180
|
+
else
|
181
|
+
ml.entries.each do |x|
|
149
182
|
r << MemoryRange.new( file_offset, x.StartOfMemoryRange, x.DataSize )
|
183
|
+
file_offset += x.DataSize
|
150
184
|
end
|
151
|
-
file_offset += x.DataSize
|
152
185
|
end
|
153
|
-
|
154
|
-
|
155
|
-
|
156
|
-
|
186
|
+
return r
|
187
|
+
elsif memory_list
|
188
|
+
ml = memory_list
|
189
|
+
r = []
|
190
|
+
if options[:merge]
|
191
|
+
ml.entries.each do |x|
|
192
|
+
if r.last && r.last.va + r.last.size == x.StartOfMemoryRange
|
193
|
+
# if section VA == prev_section.VA + prev_section.SIZE
|
194
|
+
# then just increase the size of previous section
|
195
|
+
r.last.size += x.DataSize
|
196
|
+
else
|
197
|
+
r << MemoryRange.new( x.Rva, x.StartOfMemoryRange, x.DataSize )
|
198
|
+
end
|
199
|
+
end
|
200
|
+
else
|
201
|
+
ml.entries.each do |x|
|
202
|
+
r << MemoryRange.new( x.Rva, x.StartOfMemoryRange, x.DataSize )
|
203
|
+
end
|
157
204
|
end
|
205
|
+
return r
|
206
|
+
else
|
207
|
+
raise "Could not find memory ranges"
|
158
208
|
end
|
159
|
-
r
|
160
209
|
end
|
161
210
|
|
162
211
|
end # class Minidump
|
data/lib/pedump/version.rb
CHANGED
data/pedump.gemspec
CHANGED
@@ -1,137 +1,27 @@
|
|
1
|
-
#
|
2
|
-
|
3
|
-
|
4
|
-
|
1
|
+
# coding: utf-8
|
2
|
+
lib = File.expand_path('../lib', __FILE__)
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
4
|
+
require 'pedump/version'
|
5
5
|
|
6
|
-
Gem::Specification.new do |
|
7
|
-
|
8
|
-
|
6
|
+
Gem::Specification.new do |spec|
|
7
|
+
spec.name = "pedump"
|
8
|
+
spec.version = PEdump::Version::STRING
|
9
|
+
spec.authors = ["Andrey \"Zed\" Zaikin"]
|
10
|
+
spec.email = ["zed.0xff@gmail.com"]
|
9
11
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
s.email = "zed.0xff@gmail.com"
|
15
|
-
s.executables = ["pedump"]
|
16
|
-
s.extra_rdoc_files = [
|
17
|
-
"LICENSE.txt",
|
18
|
-
"README.md"
|
19
|
-
]
|
20
|
-
s.files = [
|
21
|
-
".document",
|
22
|
-
".rspec",
|
23
|
-
".travis.yml",
|
24
|
-
"Gemfile",
|
25
|
-
"Gemfile.lock",
|
26
|
-
"LICENSE.txt",
|
27
|
-
"README.md",
|
28
|
-
"Rakefile",
|
29
|
-
"VERSION",
|
30
|
-
"bin/pedump",
|
31
|
-
"data/fs.txt",
|
32
|
-
"data/jc-userdb.txt",
|
33
|
-
"data/sig.bin",
|
34
|
-
"data/signatures.txt",
|
35
|
-
"data/userdb.txt",
|
36
|
-
"lib/pedump.rb",
|
37
|
-
"lib/pedump/cli.rb",
|
38
|
-
"lib/pedump/comparer.rb",
|
39
|
-
"lib/pedump/composite_io.rb",
|
40
|
-
"lib/pedump/core.rb",
|
41
|
-
"lib/pedump/core_ext/try.rb",
|
42
|
-
"lib/pedump/loader.rb",
|
43
|
-
"lib/pedump/loader/minidump.rb",
|
44
|
-
"lib/pedump/loader/section.rb",
|
45
|
-
"lib/pedump/logger.rb",
|
46
|
-
"lib/pedump/ne.rb",
|
47
|
-
"lib/pedump/ne/version_info.rb",
|
48
|
-
"lib/pedump/packer.rb",
|
49
|
-
"lib/pedump/pe.rb",
|
50
|
-
"lib/pedump/resources.rb",
|
51
|
-
"lib/pedump/security.rb",
|
52
|
-
"lib/pedump/sig_parser.rb",
|
53
|
-
"lib/pedump/tls.rb",
|
54
|
-
"lib/pedump/unpacker.rb",
|
55
|
-
"lib/pedump/unpacker/aspack.rb",
|
56
|
-
"lib/pedump/unpacker/upx.rb",
|
57
|
-
"lib/pedump/version.rb",
|
58
|
-
"lib/pedump/version_info.rb",
|
59
|
-
"misc/aspack/Makefile",
|
60
|
-
"misc/aspack/aspack_unlzx.c",
|
61
|
-
"misc/aspack/lzxdec.c",
|
62
|
-
"misc/aspack/lzxdec.h",
|
63
|
-
"misc/nedump.c",
|
64
|
-
"pedump.gemspec",
|
65
|
-
"samples/bad/68.exe",
|
66
|
-
"samples/bad/data_dir_15_entries.exe",
|
67
|
-
"spec/65535sects_spec.rb",
|
68
|
-
"spec/bad_imports_spec.rb",
|
69
|
-
"spec/bad_samples_spec.rb",
|
70
|
-
"spec/composite_io_spec.rb",
|
71
|
-
"spec/data/calc.exe_sections.yml",
|
72
|
-
"spec/data/data_dir_15_entries.exe_sections.yml",
|
73
|
-
"spec/dllord_spec.rb",
|
74
|
-
"spec/foldedhdr_spec.rb",
|
75
|
-
"spec/imports_badterm_spec.rb",
|
76
|
-
"spec/imports_vterm_spec.rb",
|
77
|
-
"spec/loader/names_spec.rb",
|
78
|
-
"spec/loader/va_spec.rb",
|
79
|
-
"spec/manyimportsW7_spec.rb",
|
80
|
-
"spec/ne_spec.rb",
|
81
|
-
"spec/packer_spec.rb",
|
82
|
-
"spec/pe_spec.rb",
|
83
|
-
"spec/pedump_spec.rb",
|
84
|
-
"spec/resource_spec.rb",
|
85
|
-
"spec/sections_spec.rb",
|
86
|
-
"spec/sig_all_packers_spec.rb",
|
87
|
-
"spec/sig_spec.rb",
|
88
|
-
"spec/spec_helper.rb",
|
89
|
-
"spec/support/samples.rb",
|
90
|
-
"spec/unpackers/aspack_spec.rb",
|
91
|
-
"spec/unpackers/find_spec.rb",
|
92
|
-
"spec/virtsectblXP_spec.rb",
|
93
|
-
"tmp/.keep"
|
94
|
-
]
|
95
|
-
s.homepage = "http://github.com/zed-0xff/pedump"
|
96
|
-
s.licenses = ["MIT"]
|
97
|
-
s.require_paths = ["lib"]
|
98
|
-
s.rubygems_version = "1.8.24"
|
99
|
-
s.summary = "dump win32 PE executable files with a pure ruby"
|
12
|
+
spec.summary = "dump win32 PE executable files with a pure ruby"
|
13
|
+
spec.description = "dump headers, sections, extract resources of win32 PE exe,dll,etc"
|
14
|
+
spec.homepage = "http://github.com/zed-0xff/pedump"
|
15
|
+
spec.license = "MIT"
|
100
16
|
|
101
|
-
|
102
|
-
|
17
|
+
spec.files = `git ls-files -z`.split("\x0").
|
18
|
+
reject { |f| f.match(%r{^(test|spec|features|samples|tmp|\.)/}) || f.start_with?('.') || f == "README.md.tpl" }
|
103
19
|
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
s.add_runtime_dependency(%q<awesome_print>, [">= 0"])
|
108
|
-
s.add_runtime_dependency(%q<iostruct>, [">= 0.0.4"])
|
109
|
-
s.add_runtime_dependency(%q<zhexdump>, [">= 0.0.2"])
|
110
|
-
s.add_development_dependency(%q<rspec>, [">= 0"])
|
111
|
-
s.add_development_dependency(%q<bundler>, [">= 0"])
|
112
|
-
s.add_development_dependency(%q<jeweler>, [">= 0"])
|
113
|
-
s.add_development_dependency(%q<what_methods>, [">= 0"])
|
114
|
-
else
|
115
|
-
s.add_dependency(%q<multipart-post>, ["~> 1.1.4"])
|
116
|
-
s.add_dependency(%q<progressbar>, [">= 0"])
|
117
|
-
s.add_dependency(%q<awesome_print>, [">= 0"])
|
118
|
-
s.add_dependency(%q<iostruct>, [">= 0.0.4"])
|
119
|
-
s.add_dependency(%q<zhexdump>, [">= 0.0.2"])
|
120
|
-
s.add_dependency(%q<rspec>, [">= 0"])
|
121
|
-
s.add_dependency(%q<bundler>, [">= 0"])
|
122
|
-
s.add_dependency(%q<jeweler>, [">= 0"])
|
123
|
-
s.add_dependency(%q<what_methods>, [">= 0"])
|
124
|
-
end
|
125
|
-
else
|
126
|
-
s.add_dependency(%q<multipart-post>, ["~> 1.1.4"])
|
127
|
-
s.add_dependency(%q<progressbar>, [">= 0"])
|
128
|
-
s.add_dependency(%q<awesome_print>, [">= 0"])
|
129
|
-
s.add_dependency(%q<iostruct>, [">= 0.0.4"])
|
130
|
-
s.add_dependency(%q<zhexdump>, [">= 0.0.2"])
|
131
|
-
s.add_dependency(%q<rspec>, [">= 0"])
|
132
|
-
s.add_dependency(%q<bundler>, [">= 0"])
|
133
|
-
s.add_dependency(%q<jeweler>, [">= 0"])
|
134
|
-
s.add_dependency(%q<what_methods>, [">= 0"])
|
135
|
-
end
|
136
|
-
end
|
20
|
+
spec.bindir = "bin"
|
21
|
+
spec.executables = spec.files.grep(%r{^bin/}) { |f| File.basename(f) }
|
22
|
+
spec.require_paths = ["lib"]
|
137
23
|
|
24
|
+
spec.add_development_dependency "bundler", "~> 1.11"
|
25
|
+
spec.add_development_dependency "rake", "~> 10.0"
|
26
|
+
spec.add_development_dependency "rspec", "~> 3.0"
|
27
|
+
end
|