rant 0.5.0 → 0.5.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/NEWS +30 -0
- data/README +4 -1
- data/Rantfile +28 -8
- data/doc/advanced.rdoc +19 -70
- data/doc/filelist.rdoc +963 -0
- data/doc/homepage/index.html +8 -2
- data/doc/rantfile.rdoc +7 -25
- data/doc/rubylib.rdoc +27 -0
- data/doc/sys.rdoc +15 -2
- data/doc/sys_filelist.rdoc +118 -0
- data/lib/rant.rb +1 -1
- data/lib/rant/cs_compiler.rb +4 -4
- data/lib/rant/filelist.rb +8 -0
- data/lib/rant/import/archive.rb +6 -6
- data/lib/rant/import/filelist/core.rb +429 -0
- data/lib/rant/import/filelist/inspect.rb +57 -0
- data/lib/rant/import/filelist/std.rb +64 -0
- data/lib/rant/import/nodes/default.rb +6 -2
- data/lib/rant/import/rubypackage.rb +10 -0
- data/lib/rant/init.rb +200 -0
- data/lib/rant/rantlib.rb +98 -111
- data/lib/rant/rantsys.rb +86 -455
- data/lib/rant/rantvar.rb +1 -7
- data/test/import/directedrule/Rantfile +1 -1
- data/test/lib/test_filelist.rb +481 -0
- data/test/test_filelist.rb +135 -13
- data/test/test_sys.rb +4 -0
- data/test/test_sys_methods.rb +9 -0
- data/test/tutil.rb +37 -15
- metadata +18 -7
- data/lib/rant/rantenv.rb +0 -184
- data/test/deprecated/test_0_5_2.rb +0 -61
data/lib/rant/rantenv.rb
DELETED
@@ -1,184 +0,0 @@
|
|
1
|
-
|
2
|
-
# rantenv.rb - Environment interface.
|
3
|
-
#
|
4
|
-
# Copyright (C) 2005 Stefan Lang <langstefan@gmx.at>
|
5
|
-
|
6
|
-
require 'rbconfig'
|
7
|
-
|
8
|
-
module Rant end
|
9
|
-
|
10
|
-
# This module interfaces with the environment to provide
|
11
|
-
# information/conversion methods in a portable manner.
|
12
|
-
module Rant::Env
|
13
|
-
OS = ::Config::CONFIG['target']
|
14
|
-
RUBY = ::Config::CONFIG['ruby_install_name']
|
15
|
-
RUBY_BINDIR = ::Config::CONFIG['bindir']
|
16
|
-
RUBY_EXE = File.join(RUBY_BINDIR, RUBY + ::Config::CONFIG["EXEEXT"])
|
17
|
-
|
18
|
-
@@zip_bin = false
|
19
|
-
@@tar_bin = false
|
20
|
-
|
21
|
-
if OS =~ /mswin/i
|
22
|
-
def on_windows?; true; end
|
23
|
-
else
|
24
|
-
def on_windows?; false; end
|
25
|
-
end
|
26
|
-
|
27
|
-
def have_zip?
|
28
|
-
if @@zip_bin == false
|
29
|
-
@@zip_bin = find_bin "zip"
|
30
|
-
end
|
31
|
-
!@@zip_bin.nil?
|
32
|
-
end
|
33
|
-
|
34
|
-
def have_tar?
|
35
|
-
if @@tar_bin == false
|
36
|
-
@@tar_bin = find_bin "tar"
|
37
|
-
end
|
38
|
-
!@@tar_bin.nil?
|
39
|
-
end
|
40
|
-
|
41
|
-
# Get an array with all pathes in the PATH
|
42
|
-
# environment variable.
|
43
|
-
def pathes
|
44
|
-
# Windows doesn't care about case in environment variables,
|
45
|
-
# but the ENV hash does!
|
46
|
-
path = on_windows? ? ENV["Path"] : ENV["PATH"]
|
47
|
-
return [] unless path
|
48
|
-
if on_windows?
|
49
|
-
path.split(";")
|
50
|
-
else
|
51
|
-
path.split(":")
|
52
|
-
end
|
53
|
-
end
|
54
|
-
|
55
|
-
# Searches for bin_name on path and returns
|
56
|
-
# an absolute path if successfull or nil
|
57
|
-
# if an executable called bin_name couldn't be found.
|
58
|
-
def find_bin bin_name
|
59
|
-
if on_windows?
|
60
|
-
bin_name_exe = nil
|
61
|
-
if bin_name !~ /\.[^\.]{1,3}$/i
|
62
|
-
bin_name_exe = bin_name + ".exe"
|
63
|
-
end
|
64
|
-
pathes.each { |dir|
|
65
|
-
file = File.join(dir, bin_name)
|
66
|
-
return file if test(?f, file)
|
67
|
-
if bin_name_exe
|
68
|
-
file = File.join(dir, bin_name_exe)
|
69
|
-
return file if test(?f, file)
|
70
|
-
end
|
71
|
-
}
|
72
|
-
else
|
73
|
-
pathes.each { |dir|
|
74
|
-
file = File.join(dir, bin_name)
|
75
|
-
return file if test(?x, file)
|
76
|
-
}
|
77
|
-
end
|
78
|
-
nil
|
79
|
-
end
|
80
|
-
|
81
|
-
# Add quotes to a path and replace File::Separators if necessary.
|
82
|
-
def shell_path path
|
83
|
-
# TODO: check for more characters when deciding wheter to use
|
84
|
-
# quotes.
|
85
|
-
if on_windows?
|
86
|
-
path = path.tr("/", "\\")
|
87
|
-
if path.include? ' '
|
88
|
-
'"' + path + '"'
|
89
|
-
else
|
90
|
-
path
|
91
|
-
end
|
92
|
-
else
|
93
|
-
if path.include? ' '
|
94
|
-
"'" + path + "'"
|
95
|
-
else
|
96
|
-
path
|
97
|
-
end
|
98
|
-
end
|
99
|
-
end
|
100
|
-
|
101
|
-
extend self
|
102
|
-
end # module Rant::Env
|
103
|
-
|
104
|
-
module Rant::Console
|
105
|
-
RANT_PREFIX = "rant: "
|
106
|
-
ERROR_PREFIX = "[ERROR] "
|
107
|
-
WARN_PREFIX = "[WARNING] "
|
108
|
-
def msg_prefix
|
109
|
-
if defined? @msg_prefix and @msg_prefix
|
110
|
-
@msg_prefix
|
111
|
-
else
|
112
|
-
RANT_PREFIX
|
113
|
-
end
|
114
|
-
end
|
115
|
-
def msg(*text)
|
116
|
-
pre = msg_prefix
|
117
|
-
$stderr.puts "#{pre}#{text.join("\n" + ' ' * pre.length)}"
|
118
|
-
end
|
119
|
-
def vmsg(importance, *text)
|
120
|
-
msg(*text) if verbose >= importance
|
121
|
-
end
|
122
|
-
def err_msg(*text)
|
123
|
-
pre = msg_prefix + ERROR_PREFIX
|
124
|
-
$stderr.puts "#{pre}#{text.join("\n" + ' ' * pre.length)}"
|
125
|
-
end
|
126
|
-
def warn_msg(*text)
|
127
|
-
pre = msg_prefix + WARN_PREFIX
|
128
|
-
$stderr.puts "#{pre}#{text.join("\n" + ' ' * pre.length)}"
|
129
|
-
end
|
130
|
-
def ask_yes_no text
|
131
|
-
$stderr.print msg_prefix + text + " [y|n] "
|
132
|
-
case $stdin.readline
|
133
|
-
when /y|yes/i: true
|
134
|
-
when /n|no/i: false
|
135
|
-
else
|
136
|
-
$stderr.puts(' ' * msg_prefix.length +
|
137
|
-
"Please answer with `yes' or `no'")
|
138
|
-
ask_yes_no text
|
139
|
-
end
|
140
|
-
end
|
141
|
-
def prompt text
|
142
|
-
$stderr.print msg_prefix + text
|
143
|
-
input = $stdin.readline
|
144
|
-
input ? input.chomp : input
|
145
|
-
end
|
146
|
-
def option_listing opts
|
147
|
-
rs = ""
|
148
|
-
opts.each { |lopt, *opt_a|
|
149
|
-
if opt_a.size == 2
|
150
|
-
# no short option
|
151
|
-
mode, desc = opt_a
|
152
|
-
else
|
153
|
-
sopt, mode, desc = opt_a
|
154
|
-
end
|
155
|
-
next unless desc # "private" option
|
156
|
-
optstr = ""
|
157
|
-
arg = nil
|
158
|
-
if mode != GetoptLong::NO_ARGUMENT
|
159
|
-
if desc =~ /(\b[A-Z_]{2,}\b)/
|
160
|
-
arg = $1
|
161
|
-
end
|
162
|
-
end
|
163
|
-
if lopt
|
164
|
-
optstr << lopt
|
165
|
-
if arg
|
166
|
-
optstr << " " << arg
|
167
|
-
end
|
168
|
-
optstr = optstr.ljust(30)
|
169
|
-
end
|
170
|
-
if sopt
|
171
|
-
optstr << " " unless optstr.empty?
|
172
|
-
optstr << sopt
|
173
|
-
if arg
|
174
|
-
optstr << " " << arg
|
175
|
-
end
|
176
|
-
end
|
177
|
-
rs << " #{optstr}\n"
|
178
|
-
rs << " #{desc.split("\n").join("\n ")}\n"
|
179
|
-
}
|
180
|
-
rs
|
181
|
-
end
|
182
|
-
|
183
|
-
extend self
|
184
|
-
end
|
@@ -1,61 +0,0 @@
|
|
1
|
-
|
2
|
-
require 'test/unit'
|
3
|
-
require 'tutil'
|
4
|
-
|
5
|
-
$test_deprecated_dir ||= File.expand_path(File.dirname(__FILE__))
|
6
|
-
|
7
|
-
class TestDeprecated_0_5_2 < Test::Unit::TestCase
|
8
|
-
include Rant::TestUtil
|
9
|
-
|
10
|
-
def setup
|
11
|
-
Dir.chdir $test_deprecated_dir
|
12
|
-
end
|
13
|
-
def test_method_rac
|
14
|
-
in_local_temp_dir do
|
15
|
-
write_to_file "root.rant", <<-EOF
|
16
|
-
import "sys/more"
|
17
|
-
file "f" do |t|
|
18
|
-
sys.write_to_file t.name, "nix"
|
19
|
-
end
|
20
|
-
task :a do
|
21
|
-
rac.build "f"
|
22
|
-
end
|
23
|
-
EOF
|
24
|
-
out, err = assert_rant("a")
|
25
|
-
assert test(?f, "f")
|
26
|
-
assert_equal "nix", File.read("f")
|
27
|
-
assert_match(/\bWARNING\b/, err)
|
28
|
-
assert_match(/\brac\b/, err)
|
29
|
-
assert_match(/\brant\b/, err)
|
30
|
-
assert_match(/\bdeprecated\b/, err)
|
31
|
-
end
|
32
|
-
end
|
33
|
-
def test_ary_arglist
|
34
|
-
in_local_temp_dir do
|
35
|
-
write_to_file "Rantfile", <<-EOF
|
36
|
-
task :default do
|
37
|
-
sys(sys.sp(Env::RUBY_EXE) + " -e \\"puts ARGV\\" " +
|
38
|
-
["a b", "c/d"].arglist + " > a.out")
|
39
|
-
end
|
40
|
-
EOF
|
41
|
-
out, err = assert_rant
|
42
|
-
content = Rant::Env.on_windows? ? "a b\nc\\d\n" : "a b\nc/d\n"
|
43
|
-
assert_file_content "a.out", content
|
44
|
-
assert_match(/\bWARNING\b/, err)
|
45
|
-
assert_match(/\barglist\b/, err)
|
46
|
-
assert_match(/\bsp\b/, err)
|
47
|
-
assert_match(/\bdeprecated\b/, err)
|
48
|
-
end
|
49
|
-
end
|
50
|
-
def test_ary_shell_pathes
|
51
|
-
out, err = capture_std do
|
52
|
-
sp = ["a b", "a/b"].shell_pathes
|
53
|
-
assert sp.respond_to?(:to_ary)
|
54
|
-
assert_equal 2, sp.size
|
55
|
-
end
|
56
|
-
assert_match(/\bWARNING\b/, err)
|
57
|
-
assert_match(/\bshell_pathes\b/, err)
|
58
|
-
assert_match(/\bsp\b/, err)
|
59
|
-
assert_match(/\bdeprecated\b/, err)
|
60
|
-
end
|
61
|
-
end
|