rake 0.4.11 → 0.8.7
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/CHANGES +288 -1
- data/README +101 -114
- data/Rakefile +269 -54
- data/TODO +1 -0
- data/bin/rake +26 -3
- data/doc/command_line_usage.rdoc +102 -0
- data/doc/jamis.rb +133 -106
- data/doc/rake.1.gz +0 -0
- data/doc/rakefile.rdoc +304 -4
- data/doc/release_notes/rake-0.4.14.rdoc +23 -0
- data/doc/release_notes/rake-0.4.15.rdoc +35 -0
- data/doc/release_notes/rake-0.5.0.rdoc +53 -0
- data/doc/release_notes/rake-0.5.3.rdoc +78 -0
- data/doc/release_notes/rake-0.5.4.rdoc +46 -0
- data/doc/release_notes/rake-0.6.0.rdoc +141 -0
- data/doc/release_notes/rake-0.7.0.rdoc +119 -0
- data/doc/release_notes/rake-0.7.1.rdoc +59 -0
- data/doc/release_notes/rake-0.7.2.rdoc +121 -0
- data/doc/release_notes/rake-0.7.3.rdoc +47 -0
- data/doc/release_notes/rake-0.8.0.rdoc +114 -0
- data/doc/release_notes/rake-0.8.2.rdoc +165 -0
- data/doc/release_notes/rake-0.8.3.rdoc +112 -0
- data/doc/release_notes/rake-0.8.4.rdoc +147 -0
- data/doc/release_notes/rake-0.8.5.rdoc +53 -0
- data/doc/release_notes/rake-0.8.6.rdoc +55 -0
- data/doc/release_notes/rake-0.8.7.rdoc +55 -0
- data/lib/rake/alt_system.rb +108 -0
- data/lib/rake/classic_namespace.rb +8 -0
- data/lib/rake/clean.rb +3 -1
- data/lib/rake/contrib/ftptools.rb +40 -26
- data/lib/rake/contrib/publisher.rb +1 -1
- data/lib/rake/contrib/rubyforgepublisher.rb +3 -3
- data/lib/rake/contrib/sshpublisher.rb +1 -1
- data/lib/rake/contrib/sys.rb +25 -23
- data/lib/rake/gempackagetask.rb +14 -15
- data/lib/rake/loaders/makefile.rb +42 -0
- data/lib/rake/packagetask.rb +65 -33
- data/lib/rake/rake_test_loader.rb +5 -0
- data/lib/rake/rdoctask.rb +112 -31
- data/lib/rake/ruby182_test_unit_fix.rb +23 -0
- data/lib/rake/runtest.rb +4 -4
- data/lib/rake/tasklib.rb +11 -12
- data/lib/rake/testtask.rb +67 -24
- data/lib/rake/win32.rb +55 -0
- data/lib/rake.rb +2087 -578
- data/test/capture_stdout.rb +26 -0
- data/test/check_expansion.rb +5 -0
- data/test/check_no_expansion.rb +5 -0
- data/test/data/chains/Rakefile +15 -0
- data/test/data/default/Rakefile +19 -0
- data/test/data/dryrun/Rakefile +22 -0
- data/test/data/file_creation_task/Rakefile +33 -0
- data/test/data/imports/Rakefile +19 -0
- data/test/data/imports/deps.mf +1 -0
- data/test/data/multidesc/Rakefile +17 -0
- data/test/data/namespace/Rakefile +57 -0
- data/test/data/rakelib/test1.rb +3 -0
- data/test/data/sample.mf +14 -0
- data/test/data/statusreturn/Rakefile +8 -0
- data/test/data/unittest/Rakefile +1 -0
- data/test/filecreation.rb +18 -12
- data/test/functional.rb +6 -73
- data/test/in_environment.rb +30 -0
- data/test/rake_test_setup.rb +24 -0
- data/test/reqfile.rb +3 -0
- data/test/reqfile2.rb +3 -0
- data/test/session_functional.rb +339 -0
- data/test/shellcommand.rb +0 -0
- data/test/test_application.rb +675 -0
- data/test/{testclean.rb → test_clean.rb} +1 -0
- data/test/test_definitions.rb +85 -0
- data/test/test_earlytime.rb +35 -0
- data/test/test_extension.rb +63 -0
- data/test/test_file_creation_task.rb +62 -0
- data/test/test_file_task.rb +143 -0
- data/test/test_filelist.rb +623 -0
- data/test/test_fileutils.rb +251 -0
- data/test/{testftp.rb → test_ftp.rb} +5 -1
- data/test/test_invocation_chain.rb +81 -0
- data/test/test_makefile_loader.rb +26 -0
- data/test/test_multitask.rb +45 -0
- data/test/test_namespace.rb +55 -0
- data/test/{testpackagetask.rb → test_package_task.rb} +49 -12
- data/test/test_pathmap.rb +210 -0
- data/test/test_pseudo_status.rb +26 -0
- data/test/test_rake.rb +41 -0
- data/test/test_rdoc_task.rb +88 -0
- data/test/test_require.rb +35 -0
- data/test/test_rules.rb +349 -0
- data/test/test_task_arguments.rb +89 -0
- data/test/test_task_manager.rb +173 -0
- data/test/test_tasklib.rb +12 -0
- data/test/test_tasks.rb +374 -0
- data/test/{testtesttask.rb → test_test_task.rb} +8 -2
- data/test/test_top_level_functions.rb +86 -0
- data/test/test_win32.rb +72 -0
- metadata +184 -84
- data/test/testfilelist.rb +0 -255
- data/test/testfileutils.rb +0 -83
- data/test/testtasks.rb +0 -371
- /data/test/contrib/{testsys.rb → test_sys.rb} +0 -0
|
@@ -0,0 +1,55 @@
|
|
|
1
|
+
= Rake 0.8.7 Released
|
|
2
|
+
|
|
3
|
+
Rake version 0.8.5 introduced greatly improved support for executing
|
|
4
|
+
commands on Windows. The "sh" command now has the same semantics on
|
|
5
|
+
Windows that it has on Unix based platforms.
|
|
6
|
+
|
|
7
|
+
Rake version 0.8.6 includes minor fixes the the RDoc generation.
|
|
8
|
+
Rake version 0.8.7 includes a minor fix for JRuby running on windows.
|
|
9
|
+
|
|
10
|
+
== Changes
|
|
11
|
+
|
|
12
|
+
=== New Features / Enhancements in Version 0.8.5
|
|
13
|
+
|
|
14
|
+
* Improved implementation of the Rake system command for Windows.
|
|
15
|
+
(patch from James M. Lawrence/quix)
|
|
16
|
+
|
|
17
|
+
* Support for Ruby 1.9's improved system command. (patch from James
|
|
18
|
+
M. Lawrence/quix)
|
|
19
|
+
|
|
20
|
+
* Rake now includes the configured extension when invoking an
|
|
21
|
+
executable (Config::CONFIG['EXEEXT])
|
|
22
|
+
|
|
23
|
+
=== Bug Fixes in Version 0.8.5
|
|
24
|
+
|
|
25
|
+
* Environment variable keys are now correctly cased (it matters in
|
|
26
|
+
some implementations).
|
|
27
|
+
|
|
28
|
+
== What is Rake
|
|
29
|
+
|
|
30
|
+
Rake is a build tool similar to the make program in many ways. But
|
|
31
|
+
instead of cryptic make recipes, Rake uses standard Ruby code to
|
|
32
|
+
declare tasks and dependencies. You have the full power of a modern
|
|
33
|
+
scripting language built right into your build tool.
|
|
34
|
+
|
|
35
|
+
== Availability
|
|
36
|
+
|
|
37
|
+
The easiest way to get and install rake is via RubyGems ...
|
|
38
|
+
|
|
39
|
+
gem install rake (you may need root/admin privileges)
|
|
40
|
+
|
|
41
|
+
Otherwise, you can get it from the more traditional places:
|
|
42
|
+
|
|
43
|
+
Home Page:: http://rake.rubyforge.org/
|
|
44
|
+
Download:: http://rubyforge.org/project/showfiles.php?group_id=50
|
|
45
|
+
GitHub:: git://github.com/jimweirich/rake.git
|
|
46
|
+
|
|
47
|
+
== Thanks
|
|
48
|
+
|
|
49
|
+
As usual, it was input from users that drove a alot of these changes. The
|
|
50
|
+
following people either contributed patches, made suggestions or made
|
|
51
|
+
otherwise helpful comments. Thanks to ...
|
|
52
|
+
|
|
53
|
+
* Charles Nutter
|
|
54
|
+
|
|
55
|
+
-- Jim Weirich
|
|
@@ -0,0 +1,108 @@
|
|
|
1
|
+
#
|
|
2
|
+
# Copyright (c) 2008 James M. Lawrence
|
|
3
|
+
#
|
|
4
|
+
# Permission is hereby granted, free of charge, to any person
|
|
5
|
+
# obtaining a copy of this software and associated documentation files
|
|
6
|
+
# (the "Software"), to deal in the Software without restriction,
|
|
7
|
+
# including without limitation the rights to use, copy, modify, merge,
|
|
8
|
+
# publish, distribute, sublicense, and/or sell copies of the Software,
|
|
9
|
+
# and to permit persons to whom the Software is furnished to do so,
|
|
10
|
+
# subject to the following conditions:
|
|
11
|
+
#
|
|
12
|
+
# The above copyright notice and this permission notice shall be
|
|
13
|
+
# included in all copies or substantial portions of the Software.
|
|
14
|
+
#
|
|
15
|
+
# THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND,
|
|
16
|
+
# EXPRESS OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF
|
|
17
|
+
# MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND
|
|
18
|
+
# NONINFRINGEMENT. IN NO EVENT SHALL THE AUTHORS OR COPYRIGHT HOLDERS
|
|
19
|
+
# BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER LIABILITY, WHETHER IN AN
|
|
20
|
+
# ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, OUT OF OR IN
|
|
21
|
+
# CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
|
|
22
|
+
# SOFTWARE.
|
|
23
|
+
#
|
|
24
|
+
|
|
25
|
+
require 'rbconfig'
|
|
26
|
+
|
|
27
|
+
#
|
|
28
|
+
# Alternate implementations of system() and backticks `` on Windows
|
|
29
|
+
# for ruby-1.8 and earlier.
|
|
30
|
+
#
|
|
31
|
+
module Rake::AltSystem
|
|
32
|
+
WINDOWS = Config::CONFIG["host_os"] =~ %r!(msdos|mswin|djgpp|mingw)!
|
|
33
|
+
|
|
34
|
+
class << self
|
|
35
|
+
def define_module_function(name, &block)
|
|
36
|
+
define_method(name, &block)
|
|
37
|
+
module_function(name)
|
|
38
|
+
end
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
if WINDOWS and RUBY_VERSION < "1.9.0"
|
|
42
|
+
RUNNABLE_EXTS = %w[com exe bat cmd]
|
|
43
|
+
RUNNABLE_PATTERN = %r!\.(#{RUNNABLE_EXTS.join('|')})\Z!i
|
|
44
|
+
|
|
45
|
+
define_module_function :kernel_system, &Kernel.method(:system)
|
|
46
|
+
define_module_function :kernel_backticks, &Kernel.method(:'`')
|
|
47
|
+
|
|
48
|
+
module_function
|
|
49
|
+
|
|
50
|
+
def repair_command(cmd)
|
|
51
|
+
"call " + (
|
|
52
|
+
if cmd =~ %r!\A\s*\".*?\"!
|
|
53
|
+
# already quoted
|
|
54
|
+
cmd
|
|
55
|
+
elsif match = cmd.match(%r!\A\s*(\S+)!)
|
|
56
|
+
if match[1] =~ %r!/!
|
|
57
|
+
# avoid x/y.bat interpretation as x with option /y
|
|
58
|
+
%Q!"#{match[1]}"! + match.post_match
|
|
59
|
+
else
|
|
60
|
+
# a shell command will fail if quoted
|
|
61
|
+
cmd
|
|
62
|
+
end
|
|
63
|
+
else
|
|
64
|
+
# empty or whitespace
|
|
65
|
+
cmd
|
|
66
|
+
end
|
|
67
|
+
)
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
def find_runnable(file)
|
|
71
|
+
if file =~ RUNNABLE_PATTERN
|
|
72
|
+
file
|
|
73
|
+
else
|
|
74
|
+
RUNNABLE_EXTS.each { |ext|
|
|
75
|
+
if File.exist?(test = "#{file}.#{ext}")
|
|
76
|
+
return test
|
|
77
|
+
end
|
|
78
|
+
}
|
|
79
|
+
nil
|
|
80
|
+
end
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
def system(cmd, *args)
|
|
84
|
+
repaired = (
|
|
85
|
+
if args.empty?
|
|
86
|
+
[repair_command(cmd)]
|
|
87
|
+
elsif runnable = find_runnable(cmd)
|
|
88
|
+
[File.expand_path(runnable), *args]
|
|
89
|
+
else
|
|
90
|
+
# non-existent file
|
|
91
|
+
[cmd, *args]
|
|
92
|
+
end
|
|
93
|
+
)
|
|
94
|
+
kernel_system(*repaired)
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
def backticks(cmd)
|
|
98
|
+
kernel_backticks(repair_command(cmd))
|
|
99
|
+
end
|
|
100
|
+
|
|
101
|
+
define_module_function :'`', &method(:backticks)
|
|
102
|
+
else
|
|
103
|
+
# Non-Windows or ruby-1.9+: same as Kernel versions
|
|
104
|
+
define_module_function :system, &Kernel.method(:system)
|
|
105
|
+
define_module_function :backticks, &Kernel.method(:'`')
|
|
106
|
+
define_module_function :'`', &Kernel.method(:'`')
|
|
107
|
+
end
|
|
108
|
+
end
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
# The following classes used to be in the top level namespace.
|
|
2
|
+
# Loading this file enables compatibility with older Rakefile that
|
|
3
|
+
# referenced Task from the top level.
|
|
4
|
+
|
|
5
|
+
Task = Rake::Task
|
|
6
|
+
FileTask = Rake::FileTask
|
|
7
|
+
FileCreationTask = Rake::FileCreationTask
|
|
8
|
+
RakeApp = Rake::Application
|
data/lib/rake/clean.rb
CHANGED
|
@@ -16,7 +16,9 @@
|
|
|
16
16
|
require 'rake'
|
|
17
17
|
|
|
18
18
|
CLEAN = Rake::FileList["**/*~", "**/*.bak", "**/core"]
|
|
19
|
-
CLEAN.clear_exclude
|
|
19
|
+
CLEAN.clear_exclude.exclude { |fn|
|
|
20
|
+
fn.pathmap("%f") == 'core' && File.directory?(fn)
|
|
21
|
+
}
|
|
20
22
|
|
|
21
23
|
desc "Remove any temporary products."
|
|
22
24
|
task :clean do
|
|
@@ -6,7 +6,6 @@
|
|
|
6
6
|
# use.
|
|
7
7
|
|
|
8
8
|
require 'date'
|
|
9
|
-
require 'parsedate'
|
|
10
9
|
require 'net/ftp'
|
|
11
10
|
|
|
12
11
|
module Rake # :nodoc:
|
|
@@ -20,6 +19,10 @@ module Rake # :nodoc:
|
|
|
20
19
|
@date_class ||= Date
|
|
21
20
|
end
|
|
22
21
|
|
|
22
|
+
def self.time
|
|
23
|
+
@time_class ||= Time
|
|
24
|
+
end
|
|
25
|
+
|
|
23
26
|
def initialize(path, entry)
|
|
24
27
|
@path = path
|
|
25
28
|
@mode, line, @owner, @group, size, d1, d2, d3, @name = entry.split(' ')
|
|
@@ -48,23 +51,34 @@ module Rake # :nodoc:
|
|
|
48
51
|
def parse_mode(m)
|
|
49
52
|
result = 0
|
|
50
53
|
(1..9).each do |i|
|
|
51
|
-
|
|
54
|
+
result = 2*result + ((m[i]==?-) ? 0 : 1)
|
|
52
55
|
end
|
|
53
56
|
result
|
|
54
57
|
end
|
|
55
58
|
|
|
56
59
|
def determine_time(d1, d2, d3)
|
|
57
|
-
|
|
58
|
-
if
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
60
|
+
now = self.class.time.now
|
|
61
|
+
if /:/ =~ d3
|
|
62
|
+
h, m = d3.split(':')
|
|
63
|
+
result = Time.parse("#{d1} #{d2} #{now.year} #{d3}")
|
|
64
|
+
if result > now
|
|
65
|
+
result = Time.parse("#{d1} #{d2} #{now.year-1} #{d3}")
|
|
66
|
+
end
|
|
67
|
+
else
|
|
68
|
+
result = Time.parse("#{d1} #{d2} #{d3}")
|
|
65
69
|
end
|
|
66
|
-
|
|
67
|
-
|
|
70
|
+
result
|
|
71
|
+
# elements = ParseDate.parsedate("#{d1} #{d2} #{d3}")
|
|
72
|
+
# if elements[0].nil?
|
|
73
|
+
# today = self.class.date.today
|
|
74
|
+
# if elements[1] > today.month
|
|
75
|
+
# elements[0] = today.year - 1
|
|
76
|
+
# else
|
|
77
|
+
# elements[0] = today.year
|
|
78
|
+
# end
|
|
79
|
+
# end
|
|
80
|
+
# elements = elements.collect { |el| el.nil? ? 0 : el }
|
|
81
|
+
# Time.mktime(*elements[0,7])
|
|
68
82
|
end
|
|
69
83
|
end
|
|
70
84
|
|
|
@@ -79,12 +93,12 @@ module Rake # :nodoc:
|
|
|
79
93
|
# Create an uploader and pass it to the given block as +up+.
|
|
80
94
|
# When the block is complete, close the uploader.
|
|
81
95
|
def connect(path, host, account, password)
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
96
|
+
up = self.new(path, host, account, password)
|
|
97
|
+
begin
|
|
98
|
+
yield(up)
|
|
99
|
+
ensure
|
|
100
|
+
up.close
|
|
101
|
+
end
|
|
88
102
|
end
|
|
89
103
|
end
|
|
90
104
|
|
|
@@ -103,13 +117,13 @@ module Rake # :nodoc:
|
|
|
103
117
|
def makedirs(path)
|
|
104
118
|
route = []
|
|
105
119
|
File.split(path).each do |dir|
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
120
|
+
route << dir
|
|
121
|
+
current_dir = File.join(route)
|
|
122
|
+
if @created[current_dir].nil?
|
|
123
|
+
@created[current_dir] = true
|
|
124
|
+
puts "Creating Directory #{current_dir}" if @verbose
|
|
125
|
+
@ftp.mkdir(current_dir) rescue nil
|
|
126
|
+
end
|
|
113
127
|
end
|
|
114
128
|
end
|
|
115
129
|
|
|
@@ -117,7 +131,7 @@ module Rake # :nodoc:
|
|
|
117
131
|
# path.
|
|
118
132
|
def upload_files(wildcard)
|
|
119
133
|
Dir[wildcard].each do |fn|
|
|
120
|
-
|
|
134
|
+
upload(fn)
|
|
121
135
|
end
|
|
122
136
|
end
|
|
123
137
|
|
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
#!/usr/bin/env ruby
|
|
2
2
|
|
|
3
|
-
# Copyright 2003, 2004 by Jim Weirich (jim@weirichhouse.org)
|
|
3
|
+
# Copyright 2003, 2004, 2005, 2006, 2007, 2008 by Jim Weirich (jim@weirichhouse.org)
|
|
4
4
|
# All rights reserved.
|
|
5
5
|
|
|
6
6
|
# Permission is granted for use, copying, modification, distribution,
|
data/lib/rake/contrib/sys.rb
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
#!/usr/bin/env ruby
|
|
2
2
|
|
|
3
3
|
#--
|
|
4
|
-
# Copyright
|
|
4
|
+
# Copyright 2003, 2004, 2005, 2006, 2007, 2008 by Jim Weirich (jim@weirichhouse.org)
|
|
5
5
|
#
|
|
6
6
|
# Permission is hereby granted, free of charge, to any person obtaining
|
|
7
7
|
# a copy of this software and associated documentation files (the
|
|
@@ -23,7 +23,10 @@
|
|
|
23
23
|
# WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE SOFTWARE.
|
|
24
24
|
#++
|
|
25
25
|
#
|
|
26
|
-
|
|
26
|
+
begin
|
|
27
|
+
require 'ftools'
|
|
28
|
+
rescue LoadError
|
|
29
|
+
end
|
|
27
30
|
require 'rbconfig'
|
|
28
31
|
|
|
29
32
|
######################################################################
|
|
@@ -97,13 +100,13 @@ module Sys
|
|
|
97
100
|
def delete(*wildcards)
|
|
98
101
|
wildcards.each do |wildcard|
|
|
99
102
|
Dir[wildcard].each do |fn|
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
103
|
+
if File.directory?(fn)
|
|
104
|
+
log "Deleting directory #{fn}"
|
|
105
|
+
Dir.delete(fn)
|
|
106
|
+
else
|
|
107
|
+
log "Deleting file #{fn}"
|
|
108
|
+
File.delete(fn)
|
|
109
|
+
end
|
|
107
110
|
end
|
|
108
111
|
end
|
|
109
112
|
end
|
|
@@ -112,18 +115,18 @@ module Sys
|
|
|
112
115
|
def delete_all(*wildcards)
|
|
113
116
|
wildcards.each do |wildcard|
|
|
114
117
|
Dir[wildcard].each do |fn|
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
118
|
+
next if ! File.exist?(fn)
|
|
119
|
+
if File.directory?(fn)
|
|
120
|
+
Dir["#{fn}/*"].each do |subfn|
|
|
121
|
+
next if subfn=='.' || subfn=='..'
|
|
122
|
+
delete_all(subfn)
|
|
123
|
+
end
|
|
124
|
+
log "Deleting directory #{fn}"
|
|
125
|
+
Dir.delete(fn)
|
|
126
|
+
else
|
|
127
|
+
log "Deleting file #{fn}"
|
|
128
|
+
File.delete(fn)
|
|
129
|
+
end
|
|
127
130
|
end
|
|
128
131
|
end
|
|
129
132
|
end
|
|
@@ -177,7 +180,7 @@ module Sys
|
|
|
177
180
|
def for_files(*wildcards)
|
|
178
181
|
wildcards.each do |wildcard|
|
|
179
182
|
Dir[wildcard].each do |fn|
|
|
180
|
-
|
|
183
|
+
yield(fn)
|
|
181
184
|
end
|
|
182
185
|
end
|
|
183
186
|
end
|
|
@@ -204,4 +207,3 @@ module Sys
|
|
|
204
207
|
end
|
|
205
208
|
|
|
206
209
|
end
|
|
207
|
-
|
data/lib/rake/gempackagetask.rb
CHANGED
|
@@ -6,12 +6,8 @@
|
|
|
6
6
|
require 'rubygems'
|
|
7
7
|
require 'rake'
|
|
8
8
|
require 'rake/packagetask'
|
|
9
|
-
|
|
10
|
-
|
|
11
|
-
Gem.manage_gems
|
|
12
|
-
rescue NoMethodError => ex
|
|
13
|
-
# Using rubygems prior to 0.6.1
|
|
14
|
-
end
|
|
9
|
+
require 'rubygems/user_interaction'
|
|
10
|
+
require 'rubygems/builder'
|
|
15
11
|
|
|
16
12
|
module Rake
|
|
17
13
|
|
|
@@ -77,21 +73,24 @@ module Rake
|
|
|
77
73
|
def define
|
|
78
74
|
super
|
|
79
75
|
task :package => [:gem]
|
|
76
|
+
desc "Build the gem file #{gem_file}"
|
|
80
77
|
task :gem => ["#{package_dir}/#{gem_file}"]
|
|
81
78
|
file "#{package_dir}/#{gem_file}" => [package_dir] + @gem_spec.files do
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
|
|
79
|
+
when_writing("Creating GEM") {
|
|
80
|
+
Gem::Builder.new(gem_spec).build
|
|
81
|
+
verbose(true) {
|
|
82
|
+
mv gem_file, "#{package_dir}/#{gem_file}"
|
|
83
|
+
}
|
|
84
|
+
}
|
|
88
85
|
end
|
|
89
86
|
end
|
|
90
87
|
|
|
91
|
-
private
|
|
92
|
-
|
|
93
88
|
def gem_file
|
|
94
|
-
|
|
89
|
+
if @gem_spec.platform == Gem::Platform::RUBY
|
|
90
|
+
"#{package_name}.gem"
|
|
91
|
+
else
|
|
92
|
+
"#{package_name}-#{@gem_spec.platform}.gem"
|
|
93
|
+
end
|
|
95
94
|
end
|
|
96
95
|
|
|
97
96
|
end
|
|
@@ -0,0 +1,42 @@
|
|
|
1
|
+
#!/usr/bin/env ruby
|
|
2
|
+
|
|
3
|
+
module Rake
|
|
4
|
+
|
|
5
|
+
# Makefile loader to be used with the import file loader.
|
|
6
|
+
class MakefileLoader
|
|
7
|
+
SPACE_MARK = "__&NBSP;__"
|
|
8
|
+
|
|
9
|
+
# Load the makefile dependencies in +fn+.
|
|
10
|
+
def load(fn)
|
|
11
|
+
open(fn) do |mf|
|
|
12
|
+
lines = mf.read
|
|
13
|
+
lines.gsub!(/\\ /, SPACE_MARK)
|
|
14
|
+
lines.gsub!(/#[^\n]*\n/m, "")
|
|
15
|
+
lines.gsub!(/\\\n/, ' ')
|
|
16
|
+
lines.split("\n").each do |line|
|
|
17
|
+
process_line(line)
|
|
18
|
+
end
|
|
19
|
+
end
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
private
|
|
23
|
+
|
|
24
|
+
# Process one logical line of makefile data.
|
|
25
|
+
def process_line(line)
|
|
26
|
+
file_tasks, args = line.split(':')
|
|
27
|
+
return if args.nil?
|
|
28
|
+
dependents = args.split.map { |d| respace(d) }
|
|
29
|
+
file_tasks.strip.split.each do |file_task|
|
|
30
|
+
file_task = respace(file_task)
|
|
31
|
+
file file_task => dependents
|
|
32
|
+
end
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def respace(str)
|
|
36
|
+
str.gsub(/#{SPACE_MARK}/, ' ')
|
|
37
|
+
end
|
|
38
|
+
end
|
|
39
|
+
|
|
40
|
+
# Install the handler
|
|
41
|
+
Rake.application.add_loader('mf', MakefileLoader.new)
|
|
42
|
+
end
|
data/lib/rake/packagetask.rb
CHANGED
|
@@ -27,12 +27,18 @@ module Rake
|
|
|
27
27
|
# [<b>"<em>package_dir</em>/<em>name</em>-<em>version</em>.tgz"</b>]
|
|
28
28
|
# Create a gzipped tar package (if <em>need_tar</em> is true).
|
|
29
29
|
#
|
|
30
|
+
# [<b>"<em>package_dir</em>/<em>name</em>-<em>version</em>.tar.gz"</b>]
|
|
31
|
+
# Create a gzipped tar package (if <em>need_tar_gz</em> is true).
|
|
32
|
+
#
|
|
33
|
+
# [<b>"<em>package_dir</em>/<em>name</em>-<em>version</em>.tar.bz2"</b>]
|
|
34
|
+
# Create a bzip2'd tar package (if <em>need_tar_bz2</em> is true).
|
|
35
|
+
#
|
|
30
36
|
# [<b>"<em>package_dir</em>/<em>name</em>-<em>version</em>.zip"</b>]
|
|
31
37
|
# Create a zip package archive (if <em>need_zip</em> is true).
|
|
32
38
|
#
|
|
33
39
|
# Example:
|
|
34
40
|
#
|
|
35
|
-
# PackageTask.new("rake", "1.2.3") do |p|
|
|
41
|
+
# Rake::PackageTask.new("rake", "1.2.3") do |p|
|
|
36
42
|
# p.need_tar = true
|
|
37
43
|
# p.package_files.include("lib/**/*.rb")
|
|
38
44
|
# end
|
|
@@ -47,15 +53,27 @@ module Rake
|
|
|
47
53
|
# Directory used to store the package files (default is 'pkg').
|
|
48
54
|
attr_accessor :package_dir
|
|
49
55
|
|
|
50
|
-
# True if a gzipped tar file should be produced (default is false).
|
|
56
|
+
# True if a gzipped tar file (tgz) should be produced (default is false).
|
|
51
57
|
attr_accessor :need_tar
|
|
52
58
|
|
|
59
|
+
# True if a gzipped tar file (tar.gz) should be produced (default is false).
|
|
60
|
+
attr_accessor :need_tar_gz
|
|
61
|
+
|
|
62
|
+
# True if a bzip2'd tar file (tar.bz2) should be produced (default is false).
|
|
63
|
+
attr_accessor :need_tar_bz2
|
|
64
|
+
|
|
53
65
|
# True if a zip file should be produced (default is false)
|
|
54
66
|
attr_accessor :need_zip
|
|
55
67
|
|
|
56
68
|
# List of files to be included in the package.
|
|
57
69
|
attr_accessor :package_files
|
|
58
70
|
|
|
71
|
+
# Tar command for gzipped or bzip2ed archives. The default is 'tar'.
|
|
72
|
+
attr_accessor :tar_command
|
|
73
|
+
|
|
74
|
+
# Zip command for zipped archives. The default is 'zip'.
|
|
75
|
+
attr_accessor :zip_command
|
|
76
|
+
|
|
59
77
|
# Create a Package Task with the given name and version.
|
|
60
78
|
def initialize(name=nil, version=nil)
|
|
61
79
|
init(name, version)
|
|
@@ -70,7 +88,11 @@ module Rake
|
|
|
70
88
|
@package_files = Rake::FileList.new
|
|
71
89
|
@package_dir = 'pkg'
|
|
72
90
|
@need_tar = false
|
|
91
|
+
@need_tar_gz = false
|
|
92
|
+
@need_tar_bz2 = false
|
|
73
93
|
@need_zip = false
|
|
94
|
+
@tar_command = 'tar'
|
|
95
|
+
@zip_command = 'zip'
|
|
74
96
|
end
|
|
75
97
|
|
|
76
98
|
# Create the tasks defined by this task library.
|
|
@@ -86,50 +108,54 @@ module Rake
|
|
|
86
108
|
|
|
87
109
|
desc "Remove package products"
|
|
88
110
|
task :clobber_package do
|
|
89
|
-
|
|
111
|
+
rm_r package_dir rescue nil
|
|
90
112
|
end
|
|
91
113
|
|
|
92
114
|
task :clobber => [:clobber_package]
|
|
93
115
|
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
116
|
+
[
|
|
117
|
+
[need_tar, tgz_file, "z"],
|
|
118
|
+
[need_tar_gz, tar_gz_file, "z"],
|
|
119
|
+
[need_tar_bz2, tar_bz2_file, "j"]
|
|
120
|
+
].each do |(need, file, flag)|
|
|
121
|
+
if need
|
|
122
|
+
task :package => ["#{package_dir}/#{file}"]
|
|
123
|
+
file "#{package_dir}/#{file}" => [package_dir_path] + package_files do
|
|
124
|
+
chdir(package_dir) do
|
|
125
|
+
sh %{#{@tar_command} #{flag}cvf #{file} #{package_name}}
|
|
126
|
+
end
|
|
127
|
+
end
|
|
128
|
+
end
|
|
101
129
|
end
|
|
102
|
-
|
|
130
|
+
|
|
103
131
|
if need_zip
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
132
|
+
task :package => ["#{package_dir}/#{zip_file}"]
|
|
133
|
+
file "#{package_dir}/#{zip_file}" => [package_dir_path] + package_files do
|
|
134
|
+
chdir(package_dir) do
|
|
135
|
+
sh %{#{@zip_command} -r #{zip_file} #{package_name}}
|
|
136
|
+
end
|
|
137
|
+
end
|
|
110
138
|
end
|
|
111
139
|
|
|
112
140
|
directory package_dir
|
|
113
141
|
|
|
114
142
|
file package_dir_path => @package_files do
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
143
|
+
mkdir_p package_dir rescue nil
|
|
144
|
+
@package_files.each do |fn|
|
|
145
|
+
f = File.join(package_dir_path, fn)
|
|
146
|
+
fdir = File.dirname(f)
|
|
147
|
+
mkdir_p(fdir) if !File.exist?(fdir)
|
|
148
|
+
if File.directory?(fn)
|
|
149
|
+
mkdir_p(f)
|
|
150
|
+
else
|
|
151
|
+
rm_f f
|
|
152
|
+
safe_ln(fn, f)
|
|
153
|
+
end
|
|
154
|
+
end
|
|
127
155
|
end
|
|
128
156
|
self
|
|
129
157
|
end
|
|
130
158
|
|
|
131
|
-
private
|
|
132
|
-
|
|
133
159
|
def package_name
|
|
134
160
|
@version ? "#{@name}-#{@version}" : @name
|
|
135
161
|
end
|
|
@@ -142,11 +168,17 @@ module Rake
|
|
|
142
168
|
"#{package_name}.tgz"
|
|
143
169
|
end
|
|
144
170
|
|
|
171
|
+
def tar_gz_file
|
|
172
|
+
"#{package_name}.tar.gz"
|
|
173
|
+
end
|
|
174
|
+
|
|
175
|
+
def tar_bz2_file
|
|
176
|
+
"#{package_name}.tar.bz2"
|
|
177
|
+
end
|
|
178
|
+
|
|
145
179
|
def zip_file
|
|
146
180
|
"#{package_name}.zip"
|
|
147
181
|
end
|
|
148
182
|
end
|
|
149
183
|
|
|
150
184
|
end
|
|
151
|
-
|
|
152
|
-
|