nio 0.2.2 → 0.2.3
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/History.txt +30 -24
- data/Manifest.txt +0 -11
- data/Rakefile +34 -4
- data/SOURCE.txt +31 -31
- data/lib/nio/flttol.rb +14 -2
- data/lib/nio/fmt.rb +4 -1
- data/lib/nio/rtnlzr.rb +2 -2
- data/lib/nio/version.rb +1 -1
- data/tasks/ann.rake +80 -0
- data/tasks/bones.rake +20 -0
- data/tasks/gem.rake +192 -0
- data/tasks/git.rake +40 -0
- data/tasks/manifest.rake +48 -0
- data/tasks/notes.rake +27 -0
- data/tasks/nuweb.rake +107 -51
- data/tasks/post_load.rake +39 -0
- data/tasks/rdoc.rake +50 -0
- data/tasks/rubyforge.rake +55 -0
- data/tasks/setup.rb +279 -0
- data/tasks/spec.rake +54 -0
- data/tasks/svn.rake +47 -0
- data/tasks/test.rake +40 -0
- metadata +33 -25
- data/config/hoe.rb +0 -75
- data/config/requirements.rb +0 -17
- data/script/destroy +0 -14
- data/script/destroy.cmd +0 -1
- data/script/generate +0 -14
- data/script/generate.cmd +0 -1
- data/script/txt2html +0 -74
- data/script/txt2html.cmd +0 -1
- data/tasks/deployment.rake +0 -27
- data/tasks/environment.rake +0 -7
- data/tasks/website.rake +0 -17
data/History.txt
CHANGED
@@ -1,24 +1,30 @@
|
|
1
|
-
== 0.2.
|
2
|
-
|
3
|
-
* Minor enhancements
|
4
|
-
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
*
|
17
|
-
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
*
|
23
|
-
-
|
24
|
-
|
1
|
+
== 0.2.3 2008-12-23
|
2
|
+
|
3
|
+
* Minor enhancements
|
4
|
+
- Compatibility with Ruby 1.9.1.
|
5
|
+
- Mr. Bones is used instead of Hoe/newgem for development tasks.
|
6
|
+
|
7
|
+
== 0.2.2 2008-03-04
|
8
|
+
|
9
|
+
* Minor enhancements
|
10
|
+
- show_plus can be passed a string (e.g. ' ') that is used as the plus sign;
|
11
|
+
added new show_exp_plus to control the sign display of the exponent in
|
12
|
+
scientific notation.
|
13
|
+
|
14
|
+
== 0.2.1 2007-12-15
|
15
|
+
|
16
|
+
* Minor enhancements
|
17
|
+
- The RepDec maximum number of digits can now be changed, and the default
|
18
|
+
value has been incremented to 5000 digits (was 2048). With the new value
|
19
|
+
the minimum value of a IEEE 754 extended number can now be shown as
|
20
|
+
different from zero.
|
21
|
+
- Performance optimizations in RepDec#setQ
|
22
|
+
* Bug corrections
|
23
|
+
- Fixed a problem in the formatted output of BigDecimals which affected large numbers.
|
24
|
+
- Fix minor problem with nextfloat
|
25
|
+
|
26
|
+
== 0.2.0 2007-09-22
|
27
|
+
|
28
|
+
* Initial release
|
29
|
+
- The Nio library has been extracted from and old project
|
30
|
+
and packaged as a Gem.
|
data/Manifest.txt
CHANGED
@@ -4,8 +4,6 @@ Manifest.txt
|
|
4
4
|
README.txt
|
5
5
|
SOURCE.txt
|
6
6
|
Rakefile
|
7
|
-
config/hoe.rb
|
8
|
-
config/requirements.rb
|
9
7
|
lib/nio.rb
|
10
8
|
lib/nio/version.rb
|
11
9
|
lib/nio/repdec.rb
|
@@ -14,17 +12,8 @@ lib/nio/tools.rb
|
|
14
12
|
lib/nio/rtnlzr.rb
|
15
13
|
lib/nio/fmt.rb
|
16
14
|
lib/nio/sugar.rb
|
17
|
-
script/destroy
|
18
|
-
script/destroy.cmd
|
19
|
-
script/generate
|
20
|
-
script/generate.cmd
|
21
|
-
script/txt2html
|
22
|
-
script/txt2html.cmd
|
23
15
|
setup.rb
|
24
16
|
tasks/nuweb.rake
|
25
|
-
tasks/deployment.rake
|
26
|
-
tasks/environment.rake
|
27
|
-
tasks/website.rake
|
28
17
|
test/data.yaml
|
29
18
|
test/test_helper.rb
|
30
19
|
test/test_tools.rb
|
data/Rakefile
CHANGED
@@ -1,4 +1,34 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
1
|
+
# Look in the tasks/setup.rb file for the various options that can be
|
2
|
+
# configured in this Rakefile. The .rake files in the tasks directory
|
3
|
+
# are where the options are used.
|
4
|
+
|
5
|
+
begin
|
6
|
+
require 'bones'
|
7
|
+
Bones.setup
|
8
|
+
rescue LoadError
|
9
|
+
load 'tasks/setup.rb'
|
10
|
+
end
|
11
|
+
|
12
|
+
ensure_in_path 'lib'
|
13
|
+
#require 'nio'
|
14
|
+
require File.join(File.dirname(__FILE__),'source/lib/nio/version')
|
15
|
+
|
16
|
+
task :default => 'spec:run'
|
17
|
+
|
18
|
+
|
19
|
+
PROJ.name = 'nio'
|
20
|
+
PROJ.description = "Numeric input/output"
|
21
|
+
PROJ.authors = 'Javier Goizueta'
|
22
|
+
PROJ.email = 'javier@goizueta.info'
|
23
|
+
PROJ.version = Nio::VERSION::STRING
|
24
|
+
PROJ.rubyforge.name = 'nio'
|
25
|
+
PROJ.url = "http://#{PROJ.rubyforge.name}.rubyforge.org"
|
26
|
+
PROJ.rdoc.opts = [
|
27
|
+
"--main", "README.txt",
|
28
|
+
'--title', 'Nio Documentation',
|
29
|
+
"--opname", "index.html",
|
30
|
+
"--line-numbers",
|
31
|
+
"--inline-source"
|
32
|
+
]
|
33
|
+
|
34
|
+
# EOF
|
data/SOURCE.txt
CHANGED
@@ -1,31 +1,31 @@
|
|
1
|
-
=Notes on the source code
|
2
|
-
|
3
|
-
The Ruby code in this project is generated from the source code
|
4
|
-
in the directory "source" by the Rake task *tangle*.
|
5
|
-
|
6
|
-
You can get the updated source code from the SVN repository
|
7
|
-
at Rubyforge (svn://rubyforge.org/var/svn/nio/trunk)
|
8
|
-
or from the "nio-source" package releases from the project.
|
9
|
-
|
10
|
-
The nuweb source files have extension .w
|
11
|
-
|
12
|
-
There's also a rake task named *weave* which generates
|
13
|
-
a documented form of the source code in PDF format,
|
14
|
-
which is saved to the directory source/pdf.
|
15
|
-
|
16
|
-
This tasks requires the program nuweb which converts
|
17
|
-
the nuweb sources (files with extension .w) in
|
18
|
-
directory source to either ruby files or
|
19
|
-
LaTeX files for the documentated source.
|
20
|
-
For the weave task latex and dvipdfm are also necessary.
|
21
|
-
|
22
|
-
You can get the PDF files corresponding to each realese
|
23
|
-
in the "nio-source-pdf" packages.
|
24
|
-
|
25
|
-
The necessary nuweb tool is available here for windows:
|
26
|
-
http://perso.wanadoo.es/jgoizueta/dev/tools/nuweb-win32.zip
|
27
|
-
|
28
|
-
For other systems the source code and an necessary patch
|
29
|
-
can be obtained here:
|
30
|
-
http://www.goizueta.info/javier/index.html?pg=dev/req.en.html
|
31
|
-
|
1
|
+
=Notes on the source code
|
2
|
+
|
3
|
+
The Ruby code in this project is generated from the source code
|
4
|
+
in the directory "source" by the Rake task *nuweb:tangle*.
|
5
|
+
|
6
|
+
You can get the updated source code from the SVN repository
|
7
|
+
at Rubyforge (svn://rubyforge.org/var/svn/nio/trunk)
|
8
|
+
or from the "nio-source" package releases from the project.
|
9
|
+
|
10
|
+
The nuweb source files have extension .w
|
11
|
+
|
12
|
+
There's also a rake task named *nuweb:weave* which generates
|
13
|
+
a documented form of the source code in PDF format,
|
14
|
+
which is saved to the directory source/pdf.
|
15
|
+
|
16
|
+
This tasks requires the program nuweb which converts
|
17
|
+
the nuweb sources (files with extension .w) in
|
18
|
+
directory source to either ruby files or
|
19
|
+
LaTeX files for the documentated source.
|
20
|
+
For the weave task latex and dvipdfm are also necessary.
|
21
|
+
|
22
|
+
You can get the PDF files corresponding to each realese
|
23
|
+
in the "nio-source-pdf" packages.
|
24
|
+
|
25
|
+
The necessary nuweb tool is available here for windows:
|
26
|
+
http://perso.wanadoo.es/jgoizueta/dev/tools/nuweb-win32.zip
|
27
|
+
|
28
|
+
For other systems the source code and an necessary patch
|
29
|
+
can be obtained here:
|
30
|
+
http://www.goizueta.info/javier/index.html?pg=dev/req.en.html
|
31
|
+
|
data/lib/nio/flttol.rb
CHANGED
@@ -295,7 +295,7 @@ module Nio
|
|
295
295
|
# and returns it as an object of the specified class (by default, Integer)
|
296
296
|
def apprx_i(x,result=Integer)
|
297
297
|
r = x.round
|
298
|
-
return equals?(x,r) ?
|
298
|
+
return equals?(x,r) ? Nio.numeric_cast(r,result) : x
|
299
299
|
end
|
300
300
|
|
301
301
|
|
@@ -510,7 +510,7 @@ module Nio
|
|
510
510
|
# and returns it as an object of the specified class (by default, Integer)
|
511
511
|
def apprx_i(x,result=Integer)
|
512
512
|
r = x.round
|
513
|
-
return equals?(x,r) ?
|
513
|
+
return equals?(x,r) ? Nio.numeric_cast(r,result) : x
|
514
514
|
end
|
515
515
|
|
516
516
|
|
@@ -654,4 +654,16 @@ module Nio
|
|
654
654
|
x
|
655
655
|
end
|
656
656
|
|
657
|
+
def numeric_cast(value, type)
|
658
|
+
if value.respond_to?(:prec)
|
659
|
+
value.prec(type)
|
660
|
+
else
|
661
|
+
if type.kind_of?(BigDecimal)
|
662
|
+
BigDec(value)
|
663
|
+
else
|
664
|
+
Object.send type.to_s, value
|
665
|
+
end
|
666
|
+
end
|
667
|
+
end
|
668
|
+
|
657
669
|
end
|
data/lib/nio/fmt.rb
CHANGED
@@ -1849,7 +1849,10 @@ class BigDecimal
|
|
1849
1849
|
end
|
1850
1850
|
if !converted
|
1851
1851
|
if fmt.get_base==10
|
1852
|
-
|
1852
|
+
# Don't use x.to_s because of bugs in BigDecimal in Ruby 1.9 revisions 20359-20797
|
1853
|
+
# x.to_s('F') is not affected by that problem, but produces innecesary long strings
|
1854
|
+
sgn,ds,b,e = x.split
|
1855
|
+
txt = "#{sgn<0 ? '-' : ''}0.#{ds}E#{e}"
|
1853
1856
|
|
1854
1857
|
sign = '+'
|
1855
1858
|
if txt[0,1]=='-'
|
data/lib/nio/rtnlzr.rb
CHANGED
@@ -342,7 +342,7 @@ module Nio
|
|
342
342
|
num_class ||= f.class
|
343
343
|
return mth.ip(f),1 if mth.fp(f)==0
|
344
344
|
|
345
|
-
one =
|
345
|
+
one = Nio.numeric_cast(1, num_class)
|
346
346
|
|
347
347
|
sign = f<0
|
348
348
|
f = -f if sign
|
@@ -359,7 +359,7 @@ module Nio
|
|
359
359
|
end
|
360
360
|
|
361
361
|
|
362
|
-
f1,f2 = [a,b].collect{|x| mth.abs(mth.rnd(x*f)/
|
362
|
+
f1,f2 = [a,b].collect{|x| mth.abs(mth.rnd(x*f)/Nio.numeric_cast(x, num_class)-f)}
|
363
363
|
|
364
364
|
a = f1>f2 ? b : a
|
365
365
|
|
data/lib/nio/version.rb
CHANGED
data/tasks/ann.rake
ADDED
@@ -0,0 +1,80 @@
|
|
1
|
+
|
2
|
+
begin
|
3
|
+
require 'bones/smtp_tls'
|
4
|
+
rescue LoadError
|
5
|
+
require 'net/smtp'
|
6
|
+
end
|
7
|
+
require 'time'
|
8
|
+
|
9
|
+
namespace :ann do
|
10
|
+
|
11
|
+
# A prerequisites task that all other tasks depend upon
|
12
|
+
task :prereqs
|
13
|
+
|
14
|
+
file PROJ.ann.file do
|
15
|
+
ann = PROJ.ann
|
16
|
+
puts "Generating #{ann.file}"
|
17
|
+
File.open(ann.file,'w') do |fd|
|
18
|
+
fd.puts("#{PROJ.name} version #{PROJ.version}")
|
19
|
+
fd.puts(" by #{Array(PROJ.authors).first}") if PROJ.authors
|
20
|
+
fd.puts(" #{PROJ.url}") if PROJ.url.valid?
|
21
|
+
fd.puts(" (the \"#{PROJ.release_name}\" release)") if PROJ.release_name
|
22
|
+
fd.puts
|
23
|
+
fd.puts("== DESCRIPTION")
|
24
|
+
fd.puts
|
25
|
+
fd.puts(PROJ.description)
|
26
|
+
fd.puts
|
27
|
+
fd.puts(PROJ.changes.sub(%r/^.*$/, '== CHANGES'))
|
28
|
+
fd.puts
|
29
|
+
ann.paragraphs.each do |p|
|
30
|
+
fd.puts "== #{p.upcase}"
|
31
|
+
fd.puts
|
32
|
+
fd.puts paragraphs_of(PROJ.readme_file, p).join("\n\n")
|
33
|
+
fd.puts
|
34
|
+
end
|
35
|
+
fd.puts ann.text if ann.text
|
36
|
+
end
|
37
|
+
end
|
38
|
+
|
39
|
+
desc "Create an announcement file"
|
40
|
+
task :announcement => ['ann:prereqs', PROJ.ann.file]
|
41
|
+
|
42
|
+
desc "Send an email announcement"
|
43
|
+
task :email => ['ann:prereqs', PROJ.ann.file] do
|
44
|
+
ann = PROJ.ann
|
45
|
+
from = ann.email[:from] || Array(PROJ.authors).first || PROJ.email
|
46
|
+
to = Array(ann.email[:to])
|
47
|
+
|
48
|
+
### build a mail header for RFC 822
|
49
|
+
rfc822msg = "From: #{from}\n"
|
50
|
+
rfc822msg << "To: #{to.join(',')}\n"
|
51
|
+
rfc822msg << "Subject: [ANN] #{PROJ.name} #{PROJ.version}"
|
52
|
+
rfc822msg << " (#{PROJ.release_name})" if PROJ.release_name
|
53
|
+
rfc822msg << "\n"
|
54
|
+
rfc822msg << "Date: #{Time.new.rfc822}\n"
|
55
|
+
rfc822msg << "Message-Id: "
|
56
|
+
rfc822msg << "<#{"%.8f" % Time.now.to_f}@#{ann.email[:domain]}>\n\n"
|
57
|
+
rfc822msg << File.read(ann.file)
|
58
|
+
|
59
|
+
params = [:server, :port, :domain, :acct, :passwd, :authtype].map do |key|
|
60
|
+
ann.email[key]
|
61
|
+
end
|
62
|
+
|
63
|
+
params[3] = PROJ.email if params[3].nil?
|
64
|
+
|
65
|
+
if params[4].nil?
|
66
|
+
STDOUT.write "Please enter your e-mail password (#{params[3]}): "
|
67
|
+
params[4] = STDIN.gets.chomp
|
68
|
+
end
|
69
|
+
|
70
|
+
### send email
|
71
|
+
Net::SMTP.start(*params) {|smtp| smtp.sendmail(rfc822msg, from, to)}
|
72
|
+
end
|
73
|
+
end # namespace :ann
|
74
|
+
|
75
|
+
desc 'Alias to ann:announcement'
|
76
|
+
task :ann => 'ann:announcement'
|
77
|
+
|
78
|
+
CLOBBER << PROJ.ann.file
|
79
|
+
|
80
|
+
# EOF
|
data/tasks/bones.rake
ADDED
@@ -0,0 +1,20 @@
|
|
1
|
+
|
2
|
+
if HAVE_BONES
|
3
|
+
|
4
|
+
namespace :bones do
|
5
|
+
|
6
|
+
desc 'Show the PROJ open struct'
|
7
|
+
task :debug do |t|
|
8
|
+
atr = if t.application.top_level_tasks.length == 2
|
9
|
+
t.application.top_level_tasks.pop
|
10
|
+
end
|
11
|
+
|
12
|
+
if atr then Bones::Debug.show_attr(PROJ, atr)
|
13
|
+
else Bones::Debug.show PROJ end
|
14
|
+
end
|
15
|
+
|
16
|
+
end # namespace :bones
|
17
|
+
|
18
|
+
end # HAVE_BONES
|
19
|
+
|
20
|
+
# EOF
|
data/tasks/gem.rake
ADDED
@@ -0,0 +1,192 @@
|
|
1
|
+
|
2
|
+
require 'find'
|
3
|
+
require 'rake/packagetask'
|
4
|
+
require 'rubygems/user_interaction'
|
5
|
+
require 'rubygems/builder'
|
6
|
+
|
7
|
+
module Bones
|
8
|
+
class GemPackageTask < Rake::PackageTask
|
9
|
+
# Ruby GEM spec containing the metadata for this package. The
|
10
|
+
# name, version and package_files are automatically determined
|
11
|
+
# from the GEM spec and don't need to be explicitly provided.
|
12
|
+
#
|
13
|
+
attr_accessor :gem_spec
|
14
|
+
|
15
|
+
# Tasks from the Bones gem directory
|
16
|
+
attr_reader :bones_files
|
17
|
+
|
18
|
+
# Create a GEM Package task library. Automatically define the gem
|
19
|
+
# if a block is given. If no block is supplied, then +define+
|
20
|
+
# needs to be called to define the task.
|
21
|
+
#
|
22
|
+
def initialize(gem_spec)
|
23
|
+
init(gem_spec)
|
24
|
+
yield self if block_given?
|
25
|
+
define if block_given?
|
26
|
+
end
|
27
|
+
|
28
|
+
# Initialization tasks without the "yield self" or define
|
29
|
+
# operations.
|
30
|
+
#
|
31
|
+
def init(gem)
|
32
|
+
super(gem.name, gem.version)
|
33
|
+
@gem_spec = gem
|
34
|
+
@package_files += gem_spec.files if gem_spec.files
|
35
|
+
@bones_files = []
|
36
|
+
|
37
|
+
local_setup = File.join(Dir.pwd, %w[tasks setup.rb])
|
38
|
+
if !test(?e, local_setup)
|
39
|
+
Dir.glob(::Bones.path(%w[lib bones tasks *])).each {|fn| bones_files << fn}
|
40
|
+
gem_spec.files = (gem_spec.files +
|
41
|
+
bones_files.map {|fn| File.join('tasks', File.basename(fn))}).sort
|
42
|
+
end
|
43
|
+
end
|
44
|
+
|
45
|
+
# Create the Rake tasks and actions specified by this
|
46
|
+
# GemPackageTask. (+define+ is automatically called if a block is
|
47
|
+
# given to +new+).
|
48
|
+
#
|
49
|
+
def define
|
50
|
+
super
|
51
|
+
task :prereqs
|
52
|
+
task :package => ['gem:prereqs', "#{package_dir_path}/#{gem_file}"]
|
53
|
+
file "#{package_dir_path}/#{gem_file}" => [package_dir_path] + package_files + bones_files do
|
54
|
+
when_writing("Creating GEM") {
|
55
|
+
chdir(package_dir_path) do
|
56
|
+
Gem::Builder.new(gem_spec).build
|
57
|
+
verbose(true) {
|
58
|
+
mv gem_file, "../#{gem_file}"
|
59
|
+
}
|
60
|
+
end
|
61
|
+
}
|
62
|
+
end
|
63
|
+
|
64
|
+
file package_dir_path => bones_files do
|
65
|
+
mkdir_p package_dir rescue nil
|
66
|
+
bones_files.each do |fn|
|
67
|
+
base_fn = File.join('tasks', File.basename(fn))
|
68
|
+
f = File.join(package_dir_path, base_fn)
|
69
|
+
fdir = File.dirname(f)
|
70
|
+
mkdir_p(fdir) if !File.exist?(fdir)
|
71
|
+
if File.directory?(fn)
|
72
|
+
mkdir_p(f)
|
73
|
+
else
|
74
|
+
raise "file name conflict for '#{base_fn}' (conflicts with '#{fn}')" if test(?e, f)
|
75
|
+
safe_ln(fn, f)
|
76
|
+
end
|
77
|
+
end
|
78
|
+
end
|
79
|
+
end
|
80
|
+
|
81
|
+
def gem_file
|
82
|
+
if @gem_spec.platform == Gem::Platform::RUBY
|
83
|
+
"#{package_name}.gem"
|
84
|
+
else
|
85
|
+
"#{package_name}-#{@gem_spec.platform}.gem"
|
86
|
+
end
|
87
|
+
end
|
88
|
+
end # class GemPackageTask
|
89
|
+
end # module Bones
|
90
|
+
|
91
|
+
namespace :gem do
|
92
|
+
|
93
|
+
PROJ.gem._spec = Gem::Specification.new do |s|
|
94
|
+
s.name = PROJ.name
|
95
|
+
s.version = PROJ.version
|
96
|
+
s.summary = PROJ.summary
|
97
|
+
s.authors = Array(PROJ.authors)
|
98
|
+
s.email = PROJ.email
|
99
|
+
s.homepage = Array(PROJ.url).first
|
100
|
+
s.rubyforge_project = PROJ.rubyforge.name
|
101
|
+
|
102
|
+
s.description = PROJ.description
|
103
|
+
|
104
|
+
PROJ.gem.dependencies.each do |dep|
|
105
|
+
s.add_dependency(*dep)
|
106
|
+
end
|
107
|
+
|
108
|
+
PROJ.gem.development_dependencies.each do |dep|
|
109
|
+
s.add_development_dependency(*dep)
|
110
|
+
end
|
111
|
+
|
112
|
+
s.files = PROJ.gem.files
|
113
|
+
s.executables = PROJ.gem.executables.map {|fn| File.basename(fn)}
|
114
|
+
s.extensions = PROJ.gem.files.grep %r/extconf\.rb$/
|
115
|
+
|
116
|
+
s.bindir = 'bin'
|
117
|
+
dirs = Dir["{#{PROJ.libs.join(',')}}"]
|
118
|
+
s.require_paths = dirs unless dirs.empty?
|
119
|
+
|
120
|
+
incl = Regexp.new(PROJ.rdoc.include.join('|'))
|
121
|
+
excl = PROJ.rdoc.exclude.dup.concat %w[\.rb$ ^(\.\/|\/)?ext]
|
122
|
+
excl = Regexp.new(excl.join('|'))
|
123
|
+
rdoc_files = PROJ.gem.files.find_all do |fn|
|
124
|
+
case fn
|
125
|
+
when excl; false
|
126
|
+
when incl; true
|
127
|
+
else false end
|
128
|
+
end
|
129
|
+
s.rdoc_options = PROJ.rdoc.opts + ['--main', PROJ.rdoc.main]
|
130
|
+
s.extra_rdoc_files = rdoc_files
|
131
|
+
s.has_rdoc = true
|
132
|
+
|
133
|
+
if test ?f, PROJ.test.file
|
134
|
+
s.test_file = PROJ.test.file
|
135
|
+
else
|
136
|
+
s.test_files = PROJ.test.files.to_a
|
137
|
+
end
|
138
|
+
|
139
|
+
# Do any extra stuff the user wants
|
140
|
+
PROJ.gem.extras.each do |msg, val|
|
141
|
+
case val
|
142
|
+
when Proc
|
143
|
+
val.call(s.send(msg))
|
144
|
+
else
|
145
|
+
s.send "#{msg}=", val
|
146
|
+
end
|
147
|
+
end
|
148
|
+
end # Gem::Specification.new
|
149
|
+
|
150
|
+
Bones::GemPackageTask.new(PROJ.gem._spec) do |pkg|
|
151
|
+
pkg.need_tar = PROJ.gem.need_tar
|
152
|
+
pkg.need_zip = PROJ.gem.need_zip
|
153
|
+
end
|
154
|
+
|
155
|
+
desc 'Show information about the gem'
|
156
|
+
task :debug => 'gem:prereqs' do
|
157
|
+
puts PROJ.gem._spec.to_ruby
|
158
|
+
end
|
159
|
+
|
160
|
+
desc 'Install the gem'
|
161
|
+
task :install => [:clobber, 'gem:package'] do
|
162
|
+
sh "#{SUDO} #{GEM} install --local pkg/#{PROJ.gem._spec.full_name}"
|
163
|
+
|
164
|
+
# use this version of the command for rubygems > 1.0.0
|
165
|
+
#sh "#{SUDO} #{GEM} install --no-update-sources pkg/#{PROJ.gem._spec.full_name}"
|
166
|
+
end
|
167
|
+
|
168
|
+
desc 'Uninstall the gem'
|
169
|
+
task :uninstall do
|
170
|
+
installed_list = Gem.source_index.find_name(PROJ.name)
|
171
|
+
if installed_list and installed_list.collect { |s| s.version.to_s}.include?(PROJ.version) then
|
172
|
+
sh "#{SUDO} #{GEM} uninstall --version '#{PROJ.version}' --ignore-dependencies --executables #{PROJ.name}"
|
173
|
+
end
|
174
|
+
end
|
175
|
+
|
176
|
+
desc 'Reinstall the gem'
|
177
|
+
task :reinstall => [:uninstall, :install]
|
178
|
+
|
179
|
+
desc 'Cleanup the gem'
|
180
|
+
task :cleanup do
|
181
|
+
sh "#{SUDO} #{GEM} cleanup #{PROJ.gem._spec.name}"
|
182
|
+
end
|
183
|
+
end # namespace :gem
|
184
|
+
|
185
|
+
|
186
|
+
desc 'Alias to gem:package'
|
187
|
+
task :gem => 'gem:package'
|
188
|
+
|
189
|
+
task :clobber => 'gem:clobber_package'
|
190
|
+
remove_desc_for_task 'gem:clobber_package'
|
191
|
+
|
192
|
+
# EOF
|