echoe 3.0.1 → 3.0.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.tar.gz.sig +0 -0
- data/CHANGELOG +1 -0
- data/Manifest +1 -0
- data/Rakefile +1 -0
- data/echoe.gemspec +38 -101
- data/lib/echoe.rb +145 -128
- metadata +3 -3
- metadata.gz.sig +0 -0
data.tar.gz.sig
CHANGED
|
Binary file
|
data/CHANGELOG
CHANGED
data/Manifest
CHANGED
data/Rakefile
CHANGED
data/echoe.gemspec
CHANGED
|
@@ -1,105 +1,42 @@
|
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
|
1
2
|
|
|
2
|
-
|
|
3
|
-
|
|
3
|
+
Gem::Specification.new do |s|
|
|
4
|
+
s.name = %q{echoe}
|
|
5
|
+
s.version = "3.0.2"
|
|
4
6
|
|
|
5
|
-
|
|
6
|
-
|
|
7
|
-
|
|
8
|
-
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
22
|
-
requirements:
|
|
23
|
-
- - ">="
|
|
24
|
-
- !ruby/object:Gem::Version
|
|
25
|
-
version: "0"
|
|
26
|
-
version:
|
|
27
|
-
- !ruby/object:Gem::Dependency
|
|
28
|
-
name: rubyforge
|
|
29
|
-
type: :runtime
|
|
30
|
-
version_requirement:
|
|
31
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
32
|
-
requirements:
|
|
33
|
-
- - ">="
|
|
34
|
-
- !ruby/object:Gem::Version
|
|
35
|
-
version: 1.0.0
|
|
36
|
-
version:
|
|
37
|
-
- !ruby/object:Gem::Dependency
|
|
38
|
-
name: highline
|
|
39
|
-
type: :runtime
|
|
40
|
-
version_requirement:
|
|
41
|
-
version_requirements: !ruby/object:Gem::Requirement
|
|
42
|
-
requirements:
|
|
43
|
-
- - ">="
|
|
44
|
-
- !ruby/object:Gem::Version
|
|
45
|
-
version: "0"
|
|
46
|
-
version:
|
|
47
|
-
description: A Rubygems packaging tool that provides Rake tasks for documentation, extension compiling, testing, and deployment.
|
|
48
|
-
email: ""
|
|
49
|
-
executables: []
|
|
7
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
|
|
8
|
+
s.authors = ["Evan Weaver"]
|
|
9
|
+
s.cert_chain = ["/Users/eweaver/p/configuration/gem_certificates/evan_weaver-original-public_cert.pem"]
|
|
10
|
+
s.date = %q{2008-10-26}
|
|
11
|
+
s.description = %q{A Rubygems packaging tool that provides Rake tasks for documentation, extension compiling, testing, and deployment.}
|
|
12
|
+
s.email = %q{}
|
|
13
|
+
s.extra_rdoc_files = ["CHANGELOG", "lib/echoe/client.rb", "lib/echoe/extensions.rb", "lib/echoe/platform.rb", "lib/echoe.rb", "LICENSE", "README", "TODO"]
|
|
14
|
+
s.files = ["CHANGELOG", "echoe.gemspec", "lib/echoe/client.rb", "lib/echoe/extensions.rb", "lib/echoe/platform.rb", "lib/echoe.rb", "LICENSE", "Manifest", "MIT-LICENSE", "Rakefile", "README", "TODO"]
|
|
15
|
+
s.has_rdoc = true
|
|
16
|
+
s.homepage = %q{http://blog.evanweaver.com/files/doc/fauna/echoe/}
|
|
17
|
+
s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Echoe", "--main", "README"]
|
|
18
|
+
s.require_paths = ["lib"]
|
|
19
|
+
s.rubyforge_project = %q{fauna}
|
|
20
|
+
s.rubygems_version = %q{1.3.0}
|
|
21
|
+
s.signing_key = %q{/Users/eweaver/p/configuration/gem_certificates/evan_weaver-original-private_key.pem}
|
|
22
|
+
s.summary = %q{A Rubygems packaging tool that provides Rake tasks for documentation, extension compiling, testing, and deployment.}
|
|
50
23
|
|
|
51
|
-
|
|
24
|
+
if s.respond_to? :specification_version then
|
|
25
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
|
26
|
+
s.specification_version = 2
|
|
52
27
|
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
- LICENSE
|
|
69
|
-
- Manifest
|
|
70
|
-
- MIT-LICENSE
|
|
71
|
-
- Rakefile
|
|
72
|
-
- README
|
|
73
|
-
- TODO
|
|
74
|
-
- echoe.gemspec
|
|
75
|
-
has_rdoc: true
|
|
76
|
-
homepage: http://blog.evanweaver.com/files/doc/fauna/echoe/
|
|
77
|
-
post_install_message:
|
|
78
|
-
rdoc_options:
|
|
79
|
-
- --line-numbers
|
|
80
|
-
- --inline-source
|
|
81
|
-
- --title
|
|
82
|
-
- Echoe
|
|
83
|
-
- --main
|
|
84
|
-
- README
|
|
85
|
-
require_paths:
|
|
86
|
-
- lib
|
|
87
|
-
required_ruby_version: !ruby/object:Gem::Requirement
|
|
88
|
-
requirements:
|
|
89
|
-
- - ">="
|
|
90
|
-
- !ruby/object:Gem::Version
|
|
91
|
-
version: "0"
|
|
92
|
-
version:
|
|
93
|
-
required_rubygems_version: !ruby/object:Gem::Requirement
|
|
94
|
-
requirements:
|
|
95
|
-
- - ">="
|
|
96
|
-
- !ruby/object:Gem::Version
|
|
97
|
-
version: "1.2"
|
|
98
|
-
version:
|
|
99
|
-
requirements: []
|
|
100
|
-
|
|
101
|
-
rubyforge_project: fauna
|
|
102
|
-
rubygems_version: 1.3.0
|
|
103
|
-
specification_version: 2
|
|
104
|
-
summary: A Rubygems packaging tool that provides Rake tasks for documentation, extension compiling, testing, and deployment.
|
|
105
|
-
test_files: []
|
|
28
|
+
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
|
29
|
+
s.add_runtime_dependency(%q<rake>, [">= 0"])
|
|
30
|
+
s.add_runtime_dependency(%q<rubyforge>, [">= 1.0.0"])
|
|
31
|
+
s.add_runtime_dependency(%q<highline>, [">= 0"])
|
|
32
|
+
else
|
|
33
|
+
s.add_dependency(%q<rake>, [">= 0"])
|
|
34
|
+
s.add_dependency(%q<rubyforge>, [">= 1.0.0"])
|
|
35
|
+
s.add_dependency(%q<highline>, [">= 0"])
|
|
36
|
+
end
|
|
37
|
+
else
|
|
38
|
+
s.add_dependency(%q<rake>, [">= 0"])
|
|
39
|
+
s.add_dependency(%q<rubyforge>, [">= 1.0.0"])
|
|
40
|
+
s.add_dependency(%q<highline>, [">= 0"])
|
|
41
|
+
end
|
|
42
|
+
end
|
data/lib/echoe.rb
CHANGED
|
@@ -1,4 +1,3 @@
|
|
|
1
|
-
|
|
2
1
|
require 'rubygems'
|
|
3
2
|
|
|
4
3
|
require 'rubyforge'
|
|
@@ -14,7 +13,7 @@ require 'open-uri'
|
|
|
14
13
|
require 'highline/import'
|
|
15
14
|
|
|
16
15
|
begin
|
|
17
|
-
require 'rcov/rcovtask'
|
|
16
|
+
require 'rcov/rcovtask'
|
|
18
17
|
rescue LoadError
|
|
19
18
|
end
|
|
20
19
|
|
|
@@ -35,7 +34,7 @@ Echoe includes some optional accessors for more advanced gem configuration.
|
|
|
35
34
|
For example, a simple <tt>Rakefile</tt> might look like this:
|
|
36
35
|
|
|
37
36
|
require 'echoe'
|
|
38
|
-
|
|
37
|
+
|
|
39
38
|
Echoe.new("uncapitalizer") do |p|
|
|
40
39
|
p.author = "Evan Weaver"
|
|
41
40
|
p.summary = "A library that uncapitalizes strings. It's awesome."
|
|
@@ -43,7 +42,7 @@ For example, a simple <tt>Rakefile</tt> might look like this:
|
|
|
43
42
|
p.docs_host = "uncapitalizer.com:~/www/files/doc/"
|
|
44
43
|
p.runtime_dependencies = ["string_tools >=1.4.0"]
|
|
45
44
|
end
|
|
46
|
-
|
|
45
|
+
|
|
47
46
|
See below for the full list.
|
|
48
47
|
|
|
49
48
|
== Signing gems
|
|
@@ -60,21 +59,21 @@ Make sure your environment is up-to-date:
|
|
|
60
59
|
|
|
61
60
|
Upload your <tt>public_cert.pem</tt> file to your website or Rubyforge project, and tell your users to add that certificate to their system via:
|
|
62
61
|
gem cert --add /path/to/public_cert.pem
|
|
63
|
-
|
|
62
|
+
|
|
64
63
|
Finally, package and release your project as normal. Now users can install your gem via:
|
|
65
64
|
sudo gem install gemname -P HighSecurity
|
|
66
65
|
|
|
67
66
|
Note that you can also set the key and certificate locations in the Rakefile itself. Finally, you can add <tt>p.require_signed = true</tt> to your <tt>Rakefile</tt> so that you don't accidentally release an unsigned gem if your key is missing.
|
|
68
|
-
|
|
67
|
+
|
|
69
68
|
== Metadependencies
|
|
70
69
|
|
|
71
|
-
Echoe does not force packages to depend on Echoe itself. Instead, it generates a <tt>gemspec</tt> from your <tt>Rakefile</tt> and includes that. Downstream repackagers can use the <tt>gemspec</tt> as-is to build new versions of your gem even without Echoe.
|
|
70
|
+
Echoe does not force packages to depend on Echoe itself. Instead, it generates a <tt>gemspec</tt> from your <tt>Rakefile</tt> and includes that. Downstream repackagers can use the <tt>gemspec</tt> as-is to build new versions of your gem even without Echoe.
|
|
72
71
|
|
|
73
72
|
However, Echoe is added to the <tt>development_dependencies</tt> array so that users can automatically install it via <tt>gem install --development</tt> if they prefer. You can override this behavior by setting <tt>p.development_dependencies = []</tt>.
|
|
74
73
|
|
|
75
74
|
== Cross-packaging
|
|
76
75
|
|
|
77
|
-
Echoe supports platform Rake targets to allow you to cross-package your gems. Just write the spec assuming <tt>RUBY_PLATFORM</tt> will be what you need it to be for each architecture, and then invoke Rake with the platform name when you're cross-packaging.
|
|
76
|
+
Echoe supports platform Rake targets to allow you to cross-package your gems. Just write the spec assuming <tt>RUBY_PLATFORM</tt> will be what you need it to be for each architecture, and then invoke Rake with the platform name when you're cross-packaging.
|
|
78
77
|
|
|
79
78
|
For example, on JRuby, <tt>rake package</tt> will build a generic <tt>-ruby</tt> type gem. But if you want to include a Java-specific extension, you can do one of two things. You can package from within JRuby by checking if <tt>RUBY_PLATFORM =~ /java/</tt> and setting <tt>p.platform = jruby</tt>, or you can run <tt>rake java package</tt>, which will set <tt>RUBY_PLATFORM</tt> and <tt>p.platform</tt> for you.
|
|
80
79
|
|
|
@@ -149,14 +148,14 @@ Documentation options:
|
|
|
149
148
|
class Echoe
|
|
150
149
|
|
|
151
150
|
# user-configurable
|
|
152
|
-
attr_accessor :author, :changes, :clean_pattern, :description, :email, :runtime_dependencies, :development_dependencies, :need_tgz, :need_tar_gz, :need_gem, :need_zip, :rdoc_pattern, :project, :summary, :test_pattern, :url, :version, :docs_host, :rdoc_template, :manifest_name, :install_message, :extension_pattern, :private_key, :certificate_chain, :require_signed, :ruby_version, :platform, :ignore_pattern, :executable_pattern, :changelog, :rcov_options
|
|
153
|
-
|
|
151
|
+
attr_accessor :author, :changes, :clean_pattern, :description, :email, :runtime_dependencies, :development_dependencies, :need_tgz, :need_tar_gz, :need_gem, :need_zip, :rdoc_pattern, :project, :summary, :test_pattern, :url, :version, :docs_host, :rdoc_template, :manifest_name, :install_message, :extension_pattern, :private_key, :certificate_chain, :require_signed, :ruby_version, :platform, :ignore_pattern, :executable_pattern, :changelog, :rcov_options, :gemspec_format
|
|
152
|
+
|
|
154
153
|
# best left alone
|
|
155
|
-
attr_accessor :name, :lib_files, :test_files, :bin_files, :spec, :rdoc_options, :rubyforge_name, :has_rdoc, :include_gemspec, :include_rakefile, :gemspec_name, :eval, :files, :changelog_patterns, :rubygems_version, :use_sudo
|
|
156
|
-
|
|
154
|
+
attr_accessor :name, :lib_files, :test_files, :bin_files, :spec, :rdoc_options, :rubyforge_name, :has_rdoc, :include_gemspec, :include_rakefile, :gemspec_name, :retain_gemspec, :rakefile_name, :eval, :files, :changelog_patterns, :rubygems_version, :use_sudo
|
|
155
|
+
|
|
157
156
|
# legacy
|
|
158
157
|
attr_accessor :extra_deps, :rdoc_files, :extensions, :dependencies
|
|
159
|
-
|
|
158
|
+
|
|
160
159
|
def initialize(name, _version = nil)
|
|
161
160
|
# Defaults
|
|
162
161
|
|
|
@@ -168,19 +167,19 @@ class Echoe
|
|
|
168
167
|
self.email = ""
|
|
169
168
|
self.clean_pattern = ["pkg", "doc", 'build/*', '**/coverage', '**/*.o', '**/*.so', '**/*.a', 'lib/*-*', '**/*.log', "{ext,lib}/*.{bundle,so,obj,pdb,lib,def,exp}", "ext/Makefile", "{ext,lib}/**/*.{bundle,so,obj,pdb,lib,def,exp}", "ext/**/Makefile", "pkg", "*.gem", ".config"]
|
|
170
169
|
self.test_pattern = File.exist?("test/test_all.rb") ? "test/test_all.rb" : ['test/**/test_*.rb', 'test/**/*_test.rb']
|
|
171
|
-
self.ignore_pattern = /^(pkg|doc)|\.svn|CVS|\.bzr|\.DS|\.git/
|
|
172
|
-
|
|
170
|
+
self.ignore_pattern = /^(pkg|doc)|\.svn|CVS|\.bzr|\.DS|\.git/
|
|
171
|
+
|
|
173
172
|
self.changelog_patterns = {
|
|
174
173
|
:version => [
|
|
175
|
-
/^\s*v([\d\.]+)(\.|\s|$)/,
|
|
174
|
+
/^\s*v([\d\.]+)(\.|\s|$)/,
|
|
176
175
|
/\s*\*\s*([\d\.]+)\s*\*\s*$/
|
|
177
176
|
],
|
|
178
177
|
:changes => [
|
|
179
|
-
/^\s*v([\d\.]+\. .*)/,
|
|
178
|
+
/^\s*v([\d\.]+\. .*)/,
|
|
180
179
|
/\*\s*[\d\.]+\s*\*\s*(.*)\*\s*[\d\.]+\s*\*$/m
|
|
181
180
|
]
|
|
182
181
|
}
|
|
183
|
-
|
|
182
|
+
|
|
184
183
|
self.description = ""
|
|
185
184
|
self.summary = ""
|
|
186
185
|
self.install_message = nil
|
|
@@ -190,12 +189,14 @@ class Echoe
|
|
|
190
189
|
self.rcov_options = []
|
|
191
190
|
self.rdoc_pattern = /^(lib|bin|tasks|ext)|^README|^CHANGELOG|^TODO|^LICENSE|^COPYING$/
|
|
192
191
|
|
|
192
|
+
self.gemspec_format = :ruby
|
|
193
|
+
|
|
193
194
|
title = (name.downcase == name ? name.capitalize : name)
|
|
194
195
|
self.rdoc_options = ['--line-numbers', '--inline-source', '--title', title]
|
|
195
|
-
|
|
196
|
+
|
|
196
197
|
readme = Dir['*'].detect { |filename| filename =~ /^readme/i }
|
|
197
198
|
self.rdoc_options += ['--main', readme] if readme
|
|
198
|
-
|
|
199
|
+
|
|
199
200
|
self.runtime_dependencies = []
|
|
200
201
|
self.development_dependencies = ["echoe"]
|
|
201
202
|
self.manifest_name = "Manifest"
|
|
@@ -206,13 +207,15 @@ class Echoe
|
|
|
206
207
|
|
|
207
208
|
self.need_gem = true
|
|
208
209
|
self.need_tar_gz = true
|
|
209
|
-
self.need_tgz = false
|
|
210
|
+
self.need_tgz = false
|
|
210
211
|
self.need_zip = false
|
|
211
212
|
self.platform = $platform
|
|
212
213
|
|
|
213
214
|
self.include_rakefile = true
|
|
214
|
-
self.include_gemspec = true
|
|
215
|
+
self.include_gemspec = true
|
|
215
216
|
self.gemspec_name = "#{name}.gemspec"
|
|
217
|
+
self.retain_gemspec = false
|
|
218
|
+
self.rakefile_name = "Rakefile"
|
|
216
219
|
self.rubygems_version = ">= 1.2"
|
|
217
220
|
|
|
218
221
|
yield self if block_given?
|
|
@@ -222,25 +225,25 @@ class Echoe
|
|
|
222
225
|
self.runtime_dependencies = extra_deps if extra_deps and runtime_dependencies.empty?
|
|
223
226
|
self.project = rubyforge_name if rubyforge_name
|
|
224
227
|
self.rdoc_pattern = rdoc_files if rdoc_files
|
|
225
|
-
self.extension_pattern = extensions if extensions
|
|
228
|
+
self.extension_pattern = extensions if extensions
|
|
226
229
|
|
|
227
230
|
# read manifest
|
|
228
231
|
begin
|
|
229
|
-
self.files = File.read(manifest_name).split +
|
|
230
|
-
[(gemspec_name if include_gemspec)] +
|
|
231
|
-
[(
|
|
232
|
+
self.files = File.read(manifest_name).split +
|
|
233
|
+
[(gemspec_name if include_gemspec)] +
|
|
234
|
+
[(rakefile_name if include_rakefile)]
|
|
232
235
|
self.files = files.compact.uniq
|
|
233
236
|
rescue Errno::ENOENT
|
|
234
237
|
unless ARGV.include? "manifest"
|
|
235
238
|
puts "Missing manifest. You can build one with 'rake manifest'."
|
|
236
|
-
exit
|
|
239
|
+
exit 1
|
|
237
240
|
else
|
|
238
241
|
self.files = []
|
|
239
242
|
end
|
|
240
|
-
end
|
|
241
|
-
|
|
243
|
+
end
|
|
244
|
+
|
|
242
245
|
# snag version and changeset
|
|
243
|
-
self.version ||= _version
|
|
246
|
+
self.version ||= _version
|
|
244
247
|
unless version
|
|
245
248
|
if File.exist? changelog
|
|
246
249
|
parsed = Array(changelog_patterns[:version]).map do |pattern|
|
|
@@ -263,8 +266,8 @@ class Echoe
|
|
|
263
266
|
end.compact.first or ""
|
|
264
267
|
else
|
|
265
268
|
""
|
|
266
|
-
end
|
|
267
|
-
|
|
269
|
+
end
|
|
270
|
+
|
|
268
271
|
# set some post-defaults
|
|
269
272
|
self.certificate_chain = Array(certificate_chain).map {|file| File.expand_path(file)}
|
|
270
273
|
self.private_key = File.expand_path(private_key) if private_key
|
|
@@ -275,11 +278,11 @@ class Echoe
|
|
|
275
278
|
self.ignore_pattern = apply_pattern(ignore_pattern)
|
|
276
279
|
self.rdoc_pattern = apply_pattern(rdoc_pattern, files) - [manifest_name]
|
|
277
280
|
self.executable_pattern = apply_pattern(executable_pattern, files)
|
|
278
|
-
self.test_pattern = apply_pattern(test_pattern)
|
|
281
|
+
self.test_pattern = apply_pattern(test_pattern)
|
|
279
282
|
|
|
280
283
|
define_tasks
|
|
281
284
|
end
|
|
282
|
-
|
|
285
|
+
|
|
283
286
|
def apply_pattern(pattern, files = nil)
|
|
284
287
|
files ||= Dir['**/**']
|
|
285
288
|
case pattern
|
|
@@ -288,9 +291,17 @@ class Echoe
|
|
|
288
291
|
Dir.glob(p)
|
|
289
292
|
end.flatten)
|
|
290
293
|
when Regexp
|
|
291
|
-
files.select do |file|
|
|
294
|
+
files.select do |file|
|
|
292
295
|
file =~ pattern
|
|
293
296
|
end
|
|
297
|
+
when FileList
|
|
298
|
+
pattern.each do |ignorefile|
|
|
299
|
+
ignorefiles = File.open(ignorefile).to_a.map(&:chomp)
|
|
300
|
+
files = files.select do |file|
|
|
301
|
+
ignorefiles.map { |i| File.fnmatch(i, file) }.include?(true)
|
|
302
|
+
end
|
|
303
|
+
end
|
|
304
|
+
files
|
|
294
305
|
else
|
|
295
306
|
[]
|
|
296
307
|
end
|
|
@@ -299,7 +310,7 @@ class Echoe
|
|
|
299
310
|
def define_tasks
|
|
300
311
|
|
|
301
312
|
### Packaging and Installing
|
|
302
|
-
|
|
313
|
+
|
|
303
314
|
self.spec = Gem::Specification.new do |s|
|
|
304
315
|
s.name = name
|
|
305
316
|
s.version = version
|
|
@@ -333,17 +344,17 @@ class Echoe
|
|
|
333
344
|
end
|
|
334
345
|
|
|
335
346
|
s.files = files
|
|
336
|
-
|
|
347
|
+
|
|
337
348
|
s.bindir = if executable_pattern.any?
|
|
338
349
|
executable_pattern[0].split("/")[0]
|
|
339
350
|
else
|
|
340
351
|
"bin"
|
|
341
352
|
end
|
|
342
|
-
|
|
353
|
+
|
|
343
354
|
s.executables = executable_pattern.map do |file|
|
|
344
355
|
file[(s.bindir.length + 1)..-1]
|
|
345
356
|
end
|
|
346
|
-
|
|
357
|
+
|
|
347
358
|
dirs = Dir['{lib,ext}']
|
|
348
359
|
s.extensions = extension_pattern if extension_pattern.any?
|
|
349
360
|
s.require_paths = dirs unless dirs.empty?
|
|
@@ -354,11 +365,11 @@ class Echoe
|
|
|
354
365
|
else
|
|
355
366
|
s.test_files = test_pattern
|
|
356
367
|
end
|
|
357
|
-
|
|
368
|
+
|
|
358
369
|
if eval
|
|
359
370
|
s.instance_eval &eval
|
|
360
371
|
end
|
|
361
|
-
|
|
372
|
+
|
|
362
373
|
end
|
|
363
374
|
|
|
364
375
|
self.lib_files = spec.files.grep(/^lib/)
|
|
@@ -370,35 +381,41 @@ class Echoe
|
|
|
370
381
|
pkg.need_tar_gz = @need_tar_gz
|
|
371
382
|
pkg.need_zip = @need_zip
|
|
372
383
|
end
|
|
373
|
-
|
|
384
|
+
|
|
374
385
|
task :build_gemspec do
|
|
375
386
|
# Construct the gemspec file, if needed.
|
|
376
387
|
if include_gemspec
|
|
377
388
|
File.open(gemspec_name, 'w') do |f|
|
|
378
|
-
|
|
379
|
-
|
|
380
|
-
|
|
381
|
-
|
|
382
|
-
|
|
389
|
+
case gemspec_format
|
|
390
|
+
when :yaml
|
|
391
|
+
spec.to_yaml.split("\n").each do |line|
|
|
392
|
+
# Don't publish any information about the private key or certificate chain
|
|
393
|
+
f.puts line unless line =~ /signing_key|cert_chain|\.pem/
|
|
394
|
+
end
|
|
395
|
+
when :ruby
|
|
396
|
+
f.puts spec.to_ruby
|
|
397
|
+
else
|
|
398
|
+
raise "Unknown gemspec format #{gemspec_format.inspect}. Supported formats: :ruby and :yaml"
|
|
399
|
+
end
|
|
383
400
|
end
|
|
384
|
-
end
|
|
401
|
+
end
|
|
385
402
|
end
|
|
386
|
-
|
|
403
|
+
|
|
387
404
|
# Chain it to the gemspec task prerequisite
|
|
388
|
-
task gemspec_name.to_sym => [:build_gemspec]
|
|
389
|
-
|
|
405
|
+
task gemspec_name.to_sym => [:build_gemspec]
|
|
406
|
+
|
|
390
407
|
task :package do
|
|
391
408
|
# Chain some cleanup tasks to the default :package task.
|
|
392
|
-
# Remove the gemfile if it wasn't actually requested.
|
|
409
|
+
# Remove the gemfile if it wasn't actually requested.
|
|
393
410
|
unless @need_gem
|
|
394
411
|
puts " Gem file not requested. Removed."
|
|
395
412
|
system "rm pkg/*.gem"
|
|
396
413
|
end
|
|
397
414
|
# Remove the generated gemspec once the packaging is done, to discourage people from modifying it by hand.
|
|
398
|
-
if include_gemspec and File.exist? gemspec_name
|
|
415
|
+
if include_gemspec and File.exist? gemspec_name and not retain_gemspec
|
|
399
416
|
File.delete gemspec_name
|
|
400
417
|
end
|
|
401
|
-
|
|
418
|
+
|
|
402
419
|
# Test signing status
|
|
403
420
|
if private_key and File.exist? private_key
|
|
404
421
|
puts "Signing gem."
|
|
@@ -407,13 +424,13 @@ class Echoe
|
|
|
407
424
|
puts "Private key not found; gem will not be signed."
|
|
408
425
|
end
|
|
409
426
|
puts "Targeting \"#{platform}\" platform."
|
|
410
|
-
end
|
|
427
|
+
end
|
|
411
428
|
|
|
412
429
|
desc 'Install the gem'
|
|
413
430
|
task :install => [:clean, :package, :uninstall] do
|
|
414
431
|
system "#{'sudo' if use_sudo} gem install pkg/*.gem -P MediumSecurity --no-update-sources"
|
|
415
432
|
end
|
|
416
|
-
|
|
433
|
+
|
|
417
434
|
namespace :install do
|
|
418
435
|
desc 'Install the gem including development dependencies'
|
|
419
436
|
task :development => [:clean, :package, :uninstall] do
|
|
@@ -427,52 +444,52 @@ class Echoe
|
|
|
427
444
|
end
|
|
428
445
|
|
|
429
446
|
desc 'Package and upload the release to Rubyforge'
|
|
430
|
-
task :release => [:clean, :package] do |t|
|
|
431
|
-
|
|
447
|
+
task :release => [:clean, :package] do |t|
|
|
448
|
+
|
|
432
449
|
say "\n"
|
|
433
|
-
if agree "Release #{name}-#{version} to Rubyforge? "
|
|
450
|
+
if agree "Release #{name}-#{version} to Rubyforge? "
|
|
434
451
|
pkg = "pkg/#{name}-#{version}"
|
|
435
452
|
pkg_gem = pkg + ".gem"
|
|
436
453
|
pkg_tar = pkg + ".tgz"
|
|
437
454
|
pkg_tar_gz = pkg + ".tar.gz"
|
|
438
|
-
pkg_zip = pkg + ".zip"
|
|
439
|
-
|
|
440
|
-
rf = RubyForge.new.configure
|
|
455
|
+
pkg_zip = pkg + ".zip"
|
|
456
|
+
|
|
457
|
+
rf = RubyForge.new.configure
|
|
441
458
|
puts "Logging in"
|
|
442
459
|
rf.login
|
|
443
|
-
|
|
460
|
+
|
|
444
461
|
c = rf.userconfig
|
|
445
462
|
c["release_notes"] = description if description
|
|
446
463
|
c["release_changes"] = changes if changes
|
|
447
464
|
c["preformatted"] = false
|
|
448
|
-
|
|
465
|
+
|
|
449
466
|
files = [(@need_tgz ? pkg_tar : nil),
|
|
450
467
|
(@need_tar_gz ? pkg_tar_gz : nil),
|
|
451
468
|
(@need_zip ? pkg_zip : nil),
|
|
452
469
|
(@need_gem ? pkg_gem : nil)].compact
|
|
453
|
-
|
|
470
|
+
|
|
454
471
|
puts "Releasing #{name} v. #{version}"
|
|
455
472
|
self.version = self.version.ljust(3)
|
|
456
|
-
|
|
473
|
+
|
|
457
474
|
rf.add_release project, name, version, *files
|
|
458
475
|
end
|
|
459
|
-
|
|
476
|
+
|
|
460
477
|
end
|
|
461
|
-
|
|
478
|
+
|
|
462
479
|
### Extension building
|
|
463
480
|
|
|
464
481
|
task :lib do
|
|
465
482
|
directory "lib"
|
|
466
483
|
end
|
|
467
|
-
|
|
484
|
+
|
|
468
485
|
if extension_pattern.any?
|
|
469
|
-
|
|
486
|
+
|
|
470
487
|
desc "Compile the binary extension module"
|
|
471
|
-
task :compile => [:lib] do
|
|
472
|
-
extension_pattern.each do |extension|
|
|
488
|
+
task :compile => [:lib] do
|
|
489
|
+
extension_pattern.each do |extension|
|
|
473
490
|
ext_dir = File.dirname(extension)
|
|
474
491
|
lib_target = nil
|
|
475
|
-
Dir.chdir(ext_dir) do
|
|
492
|
+
Dir.chdir(ext_dir) do
|
|
476
493
|
ruby File.basename(extension)
|
|
477
494
|
system(PLATFORM =~ /win32/ ? 'nmake' : 'make')
|
|
478
495
|
lib_target = open('Makefile').readlines.grep(/target_prefix = /).first.split('=').last.chomp("\n").strip
|
|
@@ -484,35 +501,35 @@ class Echoe
|
|
|
484
501
|
end
|
|
485
502
|
end
|
|
486
503
|
end
|
|
487
|
-
|
|
504
|
+
|
|
488
505
|
task :test => [:compile]
|
|
489
|
-
|
|
506
|
+
|
|
490
507
|
end
|
|
491
|
-
|
|
508
|
+
|
|
492
509
|
### Cross-platform targets
|
|
493
|
-
|
|
510
|
+
|
|
494
511
|
Gem::Specification::PLATFORM_CROSS_TARGETS.each do |target|
|
|
495
|
-
task target do
|
|
512
|
+
task target do
|
|
496
513
|
reset_target target
|
|
497
514
|
end
|
|
498
515
|
end
|
|
499
|
-
|
|
516
|
+
|
|
500
517
|
### Documentation
|
|
501
518
|
|
|
502
|
-
Rake::RDocTask.new(:docs) do |rd|
|
|
519
|
+
Rake::RDocTask.new(:docs) do |rd|
|
|
503
520
|
# rd.main = Dir['*'].detect {|f| f =~ /^readme/i}
|
|
504
521
|
rd.options += Array(rdoc_options)
|
|
505
|
-
|
|
506
|
-
rd.rdoc_dir = 'doc'
|
|
522
|
+
|
|
523
|
+
rd.rdoc_dir = 'doc'
|
|
507
524
|
rd.rdoc_files.push(*rdoc_pattern)
|
|
508
525
|
|
|
509
526
|
if rdoc_template
|
|
510
|
-
rd.template = rdoc_template
|
|
527
|
+
rd.template = rdoc_template
|
|
511
528
|
elsif ENV['RDOC_TEMPLATE']
|
|
512
529
|
rd.template = ENV['RDOC_TEMPLATE']
|
|
513
|
-
end
|
|
530
|
+
end
|
|
514
531
|
end
|
|
515
|
-
|
|
532
|
+
|
|
516
533
|
task :doc => [:redocs]
|
|
517
534
|
|
|
518
535
|
desc "Publish documentation to #{docs_host ? "'#{docs_host}'" : "rubyforge"}"
|
|
@@ -522,10 +539,10 @@ class Echoe
|
|
|
522
539
|
remote_dir_name = project
|
|
523
540
|
remote_dir_name += "/#{name}" if project != name
|
|
524
541
|
|
|
525
|
-
unless docs_host
|
|
542
|
+
unless docs_host
|
|
526
543
|
config = YAML.load(File.read(File.expand_path("~/.rubyforge/user-config.yml")))
|
|
527
|
-
pub = Rake::SshDirPublisher.new "#{config["username"]}@rubyforge.org",
|
|
528
|
-
"/var/www/gforge-projects/#{remote_dir_name}",
|
|
544
|
+
pub = Rake::SshDirPublisher.new "#{config["username"]}@rubyforge.org",
|
|
545
|
+
"/var/www/gforge-projects/#{remote_dir_name}",
|
|
529
546
|
local_dir
|
|
530
547
|
if project != name then
|
|
531
548
|
def pub.upload
|
|
@@ -539,29 +556,29 @@ class Echoe
|
|
|
539
556
|
end
|
|
540
557
|
end
|
|
541
558
|
end
|
|
542
|
-
pub.upload
|
|
559
|
+
pub.upload
|
|
543
560
|
else
|
|
544
561
|
# you may need ssh keys configured for this to work
|
|
545
562
|
host, dir = docs_host.split(":")
|
|
546
563
|
dir.chomp!("/")
|
|
547
|
-
|
|
564
|
+
|
|
548
565
|
# XXX too dangerous?
|
|
549
566
|
cmd = "ssh #{host} 'rm -rf #{dir}/#{remote_dir_name}'"
|
|
550
567
|
puts "Deleting existing docs: #{cmd}"
|
|
551
|
-
system(cmd)
|
|
552
|
-
|
|
568
|
+
system(cmd)
|
|
569
|
+
|
|
553
570
|
cmd = "scp -qr #{local_dir} #{host}:#{dir}/#{remote_dir_name}"
|
|
554
571
|
puts "Uploading: #{cmd}"
|
|
555
572
|
system(cmd)
|
|
556
|
-
end
|
|
573
|
+
end
|
|
557
574
|
end
|
|
558
|
-
|
|
575
|
+
|
|
559
576
|
desc 'Generate a release announcement, edit it, and post it to Rubyforge.'
|
|
560
577
|
task :announce do
|
|
561
|
-
|
|
578
|
+
|
|
562
579
|
filename = "/tmp/#{name}_#{version}_announcement.txt"
|
|
563
|
-
|
|
564
|
-
if !File.exist?(filename) or agree "Overwrite existing announcement file? "
|
|
580
|
+
|
|
581
|
+
if !File.exist?(filename) or agree "Overwrite existing announcement file? "
|
|
565
582
|
File.open(filename, 'w') do |f|
|
|
566
583
|
f.write "Subject: #{name.capitalize} #{version}\n\n"
|
|
567
584
|
f.write "#{name.capitalize} has been updated to #{version}. #{name.capitalize} is #{summary.uncapitalize}\n\n"
|
|
@@ -569,27 +586,27 @@ class Echoe
|
|
|
569
586
|
f.write "More information is available at #{url} .\n\n" unless url.empty?
|
|
570
587
|
end
|
|
571
588
|
end
|
|
572
|
-
|
|
573
|
-
begin
|
|
574
|
-
editor = ENV['EDITOR'] || 'nano'
|
|
589
|
+
|
|
590
|
+
begin
|
|
591
|
+
editor = ENV['EDITOR'] || 'nano'
|
|
575
592
|
system("#{editor} #{filename}") or raise "Editor '#{editor}' failed to start"
|
|
576
593
|
puts File.open(filename).read
|
|
577
594
|
end while !agree "Done editing? "
|
|
578
|
-
|
|
595
|
+
|
|
579
596
|
if agree "Publish announcement to Rubyforge? "
|
|
580
597
|
File.open(filename).readlines.detect { |line| line =~ /Subject: (.*)/ }
|
|
581
598
|
subject = $1 or raise "Subject line seems to have disappeared"
|
|
582
|
-
|
|
599
|
+
|
|
583
600
|
body = File.open(filename).readlines.reject { |line| line =~ /Subject: / }.join.gsub("\n\n\n", "\n\n")
|
|
584
|
-
|
|
585
|
-
rf = RubyForge.new.configure
|
|
601
|
+
|
|
602
|
+
rf = RubyForge.new.configure
|
|
586
603
|
rf.login
|
|
587
604
|
rf.post_news(project, subject, body)
|
|
588
605
|
puts "Published."
|
|
589
606
|
File.delete filename
|
|
590
607
|
end
|
|
591
|
-
end
|
|
592
|
-
|
|
608
|
+
end
|
|
609
|
+
|
|
593
610
|
### Clean
|
|
594
611
|
|
|
595
612
|
desc 'Clean up auto-generated files'
|
|
@@ -602,7 +619,7 @@ class Echoe
|
|
|
602
619
|
end
|
|
603
620
|
end
|
|
604
621
|
end
|
|
605
|
-
|
|
622
|
+
|
|
606
623
|
### Manifest
|
|
607
624
|
|
|
608
625
|
desc "Build a Manifest list"
|
|
@@ -614,16 +631,16 @@ class Echoe
|
|
|
614
631
|
next unless file
|
|
615
632
|
next if ignore_pattern.include?(file)
|
|
616
633
|
next if File.directory?(file)
|
|
617
|
-
next if !include_rakefile and file ==
|
|
634
|
+
next if !include_rakefile and file == rakefile_name
|
|
618
635
|
files << file
|
|
619
636
|
end
|
|
620
637
|
|
|
621
|
-
files <<
|
|
638
|
+
files << rakefile_name if include_rakefile
|
|
622
639
|
files << manifest_name
|
|
623
640
|
files.uniq!
|
|
624
|
-
|
|
641
|
+
|
|
625
642
|
File.open(manifest_name, 'w').puts(files)
|
|
626
|
-
|
|
643
|
+
|
|
627
644
|
(files | old_files).sort.each do |file|
|
|
628
645
|
next if file == gemspec_name
|
|
629
646
|
sign = " "
|
|
@@ -635,57 +652,57 @@ class Echoe
|
|
|
635
652
|
puts "#{sign} #{file}"
|
|
636
653
|
end
|
|
637
654
|
end
|
|
638
|
-
|
|
655
|
+
|
|
639
656
|
task :build_manifest => :manifest
|
|
640
|
-
|
|
657
|
+
|
|
641
658
|
### Testing
|
|
642
|
-
|
|
659
|
+
|
|
643
660
|
if test_pattern.any?
|
|
644
|
-
|
|
661
|
+
|
|
645
662
|
Rake::TestTask.new(:test_inner) do |t|
|
|
646
663
|
t.libs = ['lib', 'ext', 'bin', 'test']
|
|
647
664
|
t.test_files = test_pattern
|
|
648
665
|
t.verbose = true
|
|
649
666
|
end
|
|
650
|
-
|
|
667
|
+
|
|
651
668
|
desc "Run the test suite"
|
|
652
669
|
task :test do
|
|
653
|
-
if File.exist? 'test/setup.rb'
|
|
670
|
+
if File.exist? 'test/setup.rb'
|
|
654
671
|
Echoe.silence do
|
|
655
672
|
puts "Setting up test environment"
|
|
656
673
|
system("ruby test/setup.rb")
|
|
657
674
|
end
|
|
658
675
|
end
|
|
659
676
|
begin
|
|
660
|
-
test = Rake::Task[:test_inner]
|
|
677
|
+
test = Rake::Task[:test_inner]
|
|
661
678
|
if test.respond_to? :already_invoked=
|
|
662
679
|
# Method provided by MultiRails
|
|
663
680
|
test.already_invoked = false
|
|
664
681
|
end
|
|
665
682
|
test.invoke
|
|
666
|
-
ensure
|
|
667
|
-
if File.exist? 'test/teardown.rb'
|
|
668
|
-
Echoe.silence do
|
|
683
|
+
ensure
|
|
684
|
+
if File.exist? 'test/teardown.rb'
|
|
685
|
+
Echoe.silence do
|
|
669
686
|
puts "Tearing down test environment"
|
|
670
687
|
system("ruby test/teardown.rb")
|
|
671
688
|
end
|
|
672
689
|
end
|
|
673
|
-
end
|
|
690
|
+
end
|
|
674
691
|
end
|
|
675
|
-
|
|
692
|
+
|
|
676
693
|
end
|
|
677
|
-
|
|
694
|
+
|
|
678
695
|
task :default => :test
|
|
679
|
-
|
|
680
|
-
if defined? Rcov
|
|
696
|
+
|
|
697
|
+
if defined? Rcov
|
|
681
698
|
Rcov::RcovTask.new(:coverage) do |t|
|
|
682
699
|
t.test_files = test_pattern
|
|
683
700
|
t.rcov_opts << rcov_options if rcov_options
|
|
684
701
|
t.verbose = true
|
|
685
|
-
end
|
|
702
|
+
end
|
|
686
703
|
task :rcov => :coverage
|
|
687
704
|
end
|
|
688
|
-
|
|
705
|
+
|
|
689
706
|
end
|
|
690
707
|
end
|
|
691
708
|
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: echoe
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 3.0.
|
|
4
|
+
version: 3.0.2
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Evan Weaver
|
|
@@ -30,7 +30,7 @@ cert_chain:
|
|
|
30
30
|
yZ0=
|
|
31
31
|
-----END CERTIFICATE-----
|
|
32
32
|
|
|
33
|
-
date: 2008-
|
|
33
|
+
date: 2008-10-26 00:00:00 -07:00
|
|
34
34
|
default_executable:
|
|
35
35
|
dependencies:
|
|
36
36
|
- !ruby/object:Gem::Dependency
|
|
@@ -80,6 +80,7 @@ extra_rdoc_files:
|
|
|
80
80
|
- TODO
|
|
81
81
|
files:
|
|
82
82
|
- CHANGELOG
|
|
83
|
+
- echoe.gemspec
|
|
83
84
|
- lib/echoe/client.rb
|
|
84
85
|
- lib/echoe/extensions.rb
|
|
85
86
|
- lib/echoe/platform.rb
|
|
@@ -90,7 +91,6 @@ files:
|
|
|
90
91
|
- Rakefile
|
|
91
92
|
- README
|
|
92
93
|
- TODO
|
|
93
|
-
- echoe.gemspec
|
|
94
94
|
has_rdoc: true
|
|
95
95
|
homepage: http://blog.evanweaver.com/files/doc/fauna/echoe/
|
|
96
96
|
post_install_message:
|
metadata.gz.sig
CHANGED
|
Binary file
|