rant 0.5.6 → 0.5.7

Sign up to get free protection for your applications and to get access to all the features.
Files changed (56) hide show
  1. data/NEWS +12 -0
  2. data/README +3 -3
  3. data/Rantfile +7 -1
  4. data/doc/Untitled-1~ +7 -0
  5. data/doc/command.rdoc +1 -1
  6. data/doc/csharp.rdoc +49 -72
  7. data/doc/csharp.rdoc~ +37 -0
  8. data/doc/csharp_deprecated.rdoc +73 -0
  9. data/doc/homepage/index.html +5 -8
  10. data/doc/homepage/index.html~ +134 -0
  11. data/doc/sys.rdoc +14 -0
  12. data/lib/rant/coregen.rb~ +262 -0
  13. data/lib/rant/csharp/base_compiler_adapter.rb +125 -0
  14. data/lib/rant/csharp/base_compiler_adapter.rb~ +105 -0
  15. data/lib/rant/csharp/compiler_adapter_factory.rb +40 -0
  16. data/lib/rant/csharp/compiler_adapter_factory.rb~ +39 -0
  17. data/lib/rant/csharp/csc_compiler.rb +15 -0
  18. data/lib/rant/csharp/csc_compiler.rb~ +39 -0
  19. data/lib/rant/csharp/gmcs_compiler.rb +9 -0
  20. data/lib/rant/csharp/gmcs_compiler.rb~ +10 -0
  21. data/lib/rant/csharp/mcs_compiler.rb +13 -0
  22. data/lib/rant/csharp/mcs_compiler.rb~ +40 -0
  23. data/lib/rant/csharp/msc_compiler.rb~ +39 -0
  24. data/lib/rant/import/csharp.rb +48 -0
  25. data/lib/rant/import/csharp.rb~ +58 -0
  26. data/lib/rant/import/nunittest.rb +32 -0
  27. data/lib/rant/import/resgen.rb +21 -0
  28. data/lib/rant/import/resgen.rb~ +20 -0
  29. data/lib/rant/init.rb +1 -1
  30. data/lib/rant/rantlib.rb +1 -0
  31. data/lib/rant/rantlib.rb~ +1376 -0
  32. data/lib/rant/rantsys.rb +6 -0
  33. data/run_import +1 -1
  34. data/run_rant +1 -1
  35. data/test/import/package/test_package.rb~ +628 -0
  36. data/test/rule.rf +4 -0
  37. data/test/test_filetask.rb~ +97 -0
  38. data/test/test_rule.rb +10 -0
  39. data/test/test_sys_methods.rb +22 -0
  40. data/test/units/csharp/test_base_compiler_adapter.rb +107 -0
  41. data/test/units/csharp/test_base_compiler_adapter.rb~ +73 -0
  42. data/test/units/csharp/test_compiler_adapter_factory.rb +66 -0
  43. data/test/units/csharp/test_compiler_adapter_factory.rb~ +66 -0
  44. data/test/units/csharp/test_csc_compiler.rb +23 -0
  45. data/test/units/csharp/test_csc_compiler.rb~ +23 -0
  46. data/test/units/csharp/test_gmsc_compiler.rb +19 -0
  47. data/test/units/csharp/test_gmsc_compiler.rb~ +19 -0
  48. data/test/units/csharp/test_msc_compiler.rb +23 -0
  49. data/test/units/csharp/test_msc_compiler.rb~ +23 -0
  50. data/test/units/csharp_test_helper.rb +6 -0
  51. data/test/units/import/test_csharp.rb +127 -0
  52. data/test/units/import/test_csharp.rb~ +126 -0
  53. data/test/units/import/test_nunittest.rb +122 -0
  54. data/test/units/import/test_resgen.rb +107 -0
  55. data/test/units/import/test_resgen.rb~ +88 -0
  56. metadata +269 -224
data/NEWS CHANGED
@@ -1,6 +1,18 @@
1
1
 
2
2
  = Rant NEWS
3
3
 
4
+ == Rant 0.5.7
5
+
6
+ Fixes and minor improvements:
7
+ * Fixed: Rules wouldn't work if the target file was specified by an
8
+ absolute path. (Reported by Brendan Boesen.)
9
+ * Fixed: Script files use env ruby (Russel Windir)
10
+
11
+ New features:
12
+ * The method <tt>Rant::Sys.absolute_path?</tt>.
13
+ Read doc/sys.rdoc[link:files/doc/sys_rdoc.html] for documentation.
14
+ * Added non-deprecated support for C#. Read doc/csharp.rdoc[link:files/doc/csharp_rdoc.html] for documentation.
15
+
4
16
  == Rant 0.5.6
5
17
 
6
18
  Fixes and minor improvements:
data/README CHANGED
@@ -38,7 +38,7 @@ Running rant in the directory of this file:
38
38
  will ensure that the "data" file in the "backup" directory is up to
39
39
  date.
40
40
 
41
- This document was written for version 0.5.4 of Rant. Most things
41
+ This document was written for version 0.5.6 of Rant. Most things
42
42
  described here will work for older/newer versions of Rant, but look at
43
43
  the README file in the Rant distribution you've installed for exact
44
44
  documentation of your Rant version.
@@ -85,7 +85,7 @@ Tasks with command change recognition::
85
85
  Using the Configure plugin::
86
86
  read doc/configure.rdoc[link:files/doc/configure_rdoc.html] *deprecated*
87
87
  Compiling C#::
88
- read doc/csharp.rdoc[link:files/doc/csharp_rdoc.html] *deprecated*
88
+ read doc/csharp.rdoc[link:files/doc/csharp_rdoc.html]
89
89
  Common file system operations::
90
90
  read doc/sys.rdoc[link:files/doc/sys_rdoc.html]
91
91
  Upgrading::
@@ -179,6 +179,7 @@ Rant was tested on:
179
179
  1.9
180
180
  MacOS X 1.8.2
181
181
  Windows XP 1.8.2 (OneClick Installer)
182
+ Windows XP 1.8.4 (OneClick Installer)
182
183
  Windows 2000 1.8.2 (OneClick Installer)
183
184
 
184
185
  It *should* run on most platforms where Ruby runs, but you never
@@ -208,4 +209,3 @@ basic concept and syntax of Rake and of course I could have written
208
209
  code for Rake (e.g. with a so called _Tasklib_) to support portable C#
209
210
  compilation. But it was a bit quirky and because I like to work with
210
211
  Ruby, I decided to write my own build tool.
211
-
data/Rantfile CHANGED
@@ -85,7 +85,13 @@ end
85
85
  desc "Run basic tests."
86
86
  gen RubyTest do |g|
87
87
  g.libs << "test"
88
- g.pattern = 'test_*.rb'
88
+ g.test_files = sys["test/test_*.rb", "test/units/**/test_*.rb"]
89
+ end
90
+
91
+ desc "Run just unit tests."
92
+ gen RubyTest, "test:units".to_sym do |g|
93
+ g.libs << "test"
94
+ g.test_files = sys["test/units/**/test_*.rb"]
89
95
  end
90
96
 
91
97
  desc "Run first test-project."
@@ -0,0 +1,7 @@
1
+
2
+ == Support for C#
3
+
4
+ Rant contains a number of generators to support the building of C# projects -
5
+ from compiling source files to resources to testing.
6
+
7
+ =
@@ -74,7 +74,7 @@ There is also a more concise syntax:
74
74
 
75
75
  gen Rule, ".o" => ".c" do |target, sources|
76
76
  gen Command, target, sources,
77
- 'cc -c -o $(<) $[CFLAGS] $(-)'
77
+ 'cc -c -o $(>) $[CFLAGS] $(-)'
78
78
  end
79
79
 
80
80
  For the last syntax:
@@ -1,73 +1,50 @@
1
1
 
2
- == Compiling C# sources
3
-
4
- Support for C# is currently implemented as plugin. But expect that to
5
- change in the near future. Also note that support for C# wasn't
6
- heavily tested (but it works because I'm using it).
7
-
8
- It is convinient to use the C# plugin in combination with the
9
- Configure plugin. I'll show a short Rantfile first and explain it
10
- afterwards.
11
-
12
- conf = plugin :Configure do |conf|
13
- desc "Configure build."
14
- conf.task
15
- desc "Interactive configure."
16
- conf.task "ask-config", [:interact]
17
- conf.init_modes = [:guess, :interact]
18
- end
19
-
20
- plugin :Csharp do |cs|
21
- cs.config = conf
22
- end
23
-
24
- gen Assembly, "myprog.exe" do |t|
25
- t.libs = %w(System.Drawing.dll System.Windows.Forms.dll)
26
- t.sources = Dir["src/*.cs"]
27
- t.resources = Dir["res/*.*"]
28
- end
29
-
30
- First we instantiate the Configure plugin and let it define two tasks
31
- for us:
32
- <tt>conf.task</tt>:: Creates a task with the name "configure" which
33
- will first guess values and ask the user as
34
- fallback if it can't guess the value.
35
- <tt>conf.task "ask-config", [:interact]</tt>::
36
- This task interactively asks the user for all values.
37
- Afterwards we set the +init_modes+. Those decide what will be done on
38
- a regular rant startup if the +config+ file doesn't exist. We tell it
39
- to first guess configure values and to fall back to interactive mode
40
- if necessary.
41
-
42
- Then we instantiate the Csharp plugin and connect it with the
43
- Configure plugin. As a result of this operation, the Csharp plugin
44
- will define three configure _checks_:
45
- 1. The command to invoke the C# compiler.
46
- 2. If optimization should be turned on.
47
- 3. If debug information should be generated.
48
-
49
- And last but not least we let generate a task to compile our program
50
- <tt>myprog.exe</tt>. The +Assembly+ generator takes the same argument
51
- as a normal task, meaning you could also add prerequisites:
52
- gen Assembly, "myprog.exe" => :pre do |t|
53
- .
54
- .
55
- .
56
- The +libs+ attribute is a list of libraries the assembly will be
57
- linked against, the +sources+ attribute should be clear and the
58
- +resources+ attribute is a list of resources to be embedded in the
59
- assembly.
60
-
61
- Now let's see what is actually done by rant when we feed it this
62
- Rantfile. We tell rant to build <tt>myprog.exe</tt>:
63
- % rant myprog.exe
64
- cscc -o myprog.exe -Wall -O2 -l System.Drawing.dll -l System.Windows.Forms.dll -fresources=res/MyProg.legend.png src/MyProg.cs src/Util.cs
65
- This was on a Linux system, on Windows you'll probably see a command
66
- with csc.
67
-
68
- == See also
69
-
70
- Rant Overview::
71
- README[link:files/README.html]
72
- Writing an Rantfile::
73
- doc/rantfile.rdoc[link:files/doc/rantfile_rdoc.html]
2
+ == C# Compiling
3
+
4
+ Compiling a basic C# application is as simple as passing the desired filename and a list of source files to the +CSharp+ generator (assuming a C# compiler is in your path).
5
+
6
+ import 'csharp'
7
+ gen CSharp, "example.dll", :sources => sys["**/*.cs"]
8
+
9
+ This creates a file task called "example.dll". Source files can be specified as a +FileList+, array, or string. The created task is dependent on all source files, so if any of them change the dll will be recompiled. You can specify library and resource files in the same manner
10
+
11
+ gen CSharp, "example.dll", :sources => sys["**/*.cs"],
12
+ :libs => ["mylib.dll", "mylib2.dll"]
13
+ :res => "myres.resource"
14
+
15
+ The generator guesses what type of output you want by inspecting the file extension of the out file ("example.dll"). +exe+ will be compiled to +winexe+, +netmodule+ to +module+, and all others to +dll+. You can override this by providing a :target key in the parameter hash. Any other parameters you specify are passed through to the C# compiler.
16
+
17
+ gen CSharp, "example.exe", :sources => sys["**/*.cs"],
18
+ :target => "exe",
19
+ :warnaserror => true
20
+
21
+ == Alternate Compilers
22
+
23
+ The +CSharp+ generator searches your path for one of 3 known C# compilers - +csc+, +mcs+, and +gmcs+. You can specify a different compiler by providing a compiler adapter through the :compiler key. The existing compiler adapters provide a one parameter constructor that allows you to specify the path to that compiler. Or you can of course provide your own implementation.
24
+
25
+ csc11 = CscCompiler.new("/path/to/csc1.1")
26
+ gen CSharp, "example.dll", :sources => sys["**/*.cs"],
27
+ :compiler => csc11
28
+
29
+ == Resource Generation
30
+
31
+ A generator is provided to create a rule for compiling resource files with resgen. This is quite powerful as it allows you to simply reference the compiled resource files in you CSharp generator, and they will automatically be built as required.
32
+
33
+ import "resgen"
34
+ gen Resgen, :build_dir => "build/", :namespace => "Example"
35
+
36
+ # properties/resource.resx => build/Example.Properties.Resource.resources
37
+ # MyRes.resx => build/Example.MyRes.resources
38
+
39
+ == Running NUnit
40
+
41
+ You can easily run an NUnit test suite using the +NUnitTest+ generator
42
+
43
+ import "nunittest"
44
+ gen NUnitTest, "test", :dlls => ["mytest1.dll", "mytest2.dll"]
45
+
46
+ By default, nunit-console is used, and it must exist in your path. You can specify a different test runner using the :bin key. Any other arguments are passed through to the test runner
47
+
48
+ gen NUnitTest, "test", :dlls => sys["test/*.dll"],
49
+ :bin => "my-test-runner",
50
+ :xml => "results.xml"
@@ -0,0 +1,37 @@
1
+
2
+ == C# Compiling
3
+
4
+ Compiling a basic C# application is as simple as passing the desired filename and a list of source files to the +CSharp+ generator (assuming a C# compiler is in your path).
5
+
6
+ import 'csharp'
7
+ gen CSharp, "example.dll", :sources => sys["**/*.cs"]
8
+
9
+ This creates a file task called "example.dll". Source files can be specified as a +FileList+, array, or string. The created task is dependent on all source files, so if any of them change the dll will be recompiled. You can specify library and resource files in the same manner
10
+
11
+ gen CSharp, "example.dll", :sources => sys["**/*.cs"],
12
+ :libs => ["mylib.dll", "mylib2.dll"]
13
+ :res => "myres.resource"
14
+
15
+ The generator guesses what type of output you want by inspecting the file extension of the out file ("example.dll"). +exe+ will be compiled to +winexe+, +netmodule+ to +module+, and all others to +dll+. You can override this by providing a :target key in the parameter hash. Any other parameters you specify are passed through to the C# compiler.
16
+
17
+ gen CSharp, "example.exe", :sources => sys["**/*.cs"],
18
+ :target => "exe",
19
+ :warnaserror => true
20
+
21
+ == Alternate Compilers
22
+
23
+ The +CSharp+ generator searches your path for one of 3 known C# compilers - +csc+, +mcs+, and +gmcs+. You can specify a different compiler by providing a compiler adapter through the :compiler key. The existing compiler adapters provide a one parameter constructor that allows you to specify the path to that compiler. Or you can of course provide your own implementation.
24
+
25
+ csc11 = CscCompiler.new("/path/to/csc1.1")
26
+ gen CSharp, "example.dll", :sources => sys["**/*.cs"],
27
+ :compiler => csc11
28
+
29
+ == Resource Generation
30
+
31
+ A generator is provided to create a rule for compiling resource files with resgen. This is quite powerful as it allows you to simply reference the compiled resource files in you CSharp generator, and they will automatically be built as required.
32
+
33
+ import "resgen"
34
+ gen Resgen, :build_dir => "build/", :namespace => "Example"
35
+
36
+ # properties/resource.resx => build/Example.Properties.Resource.resources
37
+ # MyRes.resx => build/Example.MyRes.resources
@@ -0,0 +1,73 @@
1
+
2
+ == Compiling C# sources
3
+
4
+ Support for C# is currently implemented as plugin. But expect that to
5
+ change in the near future. Also note that support for C# wasn't
6
+ heavily tested (but it works because I'm using it).
7
+
8
+ It is convinient to use the C# plugin in combination with the
9
+ Configure plugin. I'll show a short Rantfile first and explain it
10
+ afterwards.
11
+
12
+ conf = plugin :Configure do |conf|
13
+ desc "Configure build."
14
+ conf.task
15
+ desc "Interactive configure."
16
+ conf.task "ask-config", [:interact]
17
+ conf.init_modes = [:guess, :interact]
18
+ end
19
+
20
+ plugin :Csharp do |cs|
21
+ cs.config = conf
22
+ end
23
+
24
+ gen Assembly, "myprog.exe" do |t|
25
+ t.libs = %w(System.Drawing.dll System.Windows.Forms.dll)
26
+ t.sources = Dir["src/*.cs"]
27
+ t.resources = Dir["res/*.*"]
28
+ end
29
+
30
+ First we instantiate the Configure plugin and let it define two tasks
31
+ for us:
32
+ <tt>conf.task</tt>:: Creates a task with the name "configure" which
33
+ will first guess values and ask the user as
34
+ fallback if it can't guess the value.
35
+ <tt>conf.task "ask-config", [:interact]</tt>::
36
+ This task interactively asks the user for all values.
37
+ Afterwards we set the +init_modes+. Those decide what will be done on
38
+ a regular rant startup if the +config+ file doesn't exist. We tell it
39
+ to first guess configure values and to fall back to interactive mode
40
+ if necessary.
41
+
42
+ Then we instantiate the Csharp plugin and connect it with the
43
+ Configure plugin. As a result of this operation, the Csharp plugin
44
+ will define three configure _checks_:
45
+ 1. The command to invoke the C# compiler.
46
+ 2. If optimization should be turned on.
47
+ 3. If debug information should be generated.
48
+
49
+ And last but not least we let generate a task to compile our program
50
+ <tt>myprog.exe</tt>. The +Assembly+ generator takes the same argument
51
+ as a normal task, meaning you could also add prerequisites:
52
+ gen Assembly, "myprog.exe" => :pre do |t|
53
+ .
54
+ .
55
+ .
56
+ The +libs+ attribute is a list of libraries the assembly will be
57
+ linked against, the +sources+ attribute should be clear and the
58
+ +resources+ attribute is a list of resources to be embedded in the
59
+ assembly.
60
+
61
+ Now let's see what is actually done by rant when we feed it this
62
+ Rantfile. We tell rant to build <tt>myprog.exe</tt>:
63
+ % rant myprog.exe
64
+ cscc -o myprog.exe -Wall -O2 -l System.Drawing.dll -l System.Windows.Forms.dll -fresources=res/MyProg.legend.png src/MyProg.cs src/Util.cs
65
+ This was on a Linux system, on Windows you'll probably see a command
66
+ with csc.
67
+
68
+ == See also
69
+
70
+ Rant Overview::
71
+ README[link:files/README.html]
72
+ Writing an Rantfile::
73
+ doc/rantfile.rdoc[link:files/doc/rantfile_rdoc.html]
@@ -89,9 +89,9 @@
89
89
  <a
90
90
  href="http://rubyforge.org/tracker/?func=add&amp;group_id=615&amp;atid=2428">Report a bug</a><br/>
91
91
  <a title="Subversion repository for Rant development"
92
- href="http://developer.berlios.de/svn/?group_id=5046">Repository</a><br/>
92
+ href="http://rubyforge.org/scm/?group_id=615">Repository</a><br/>
93
93
  <a title="Browse source code repository."
94
- href="http://svn.berlios.de/wsvn/rant">WebSVN</a><br/>
94
+ href="http://rubyforge.org/cgi-bin/viewvc.cgi/?root=make">WebSVN</a><br/>
95
95
  </p>
96
96
  </div>
97
97
 
@@ -120,12 +120,9 @@
120
120
  <p>
121
121
  <a href="http://validator.w3.org/check?uri=referer"><img
122
122
  src="http://www.w3.org/Icons/valid-xhtml10"
123
- alt="Valid XHTML 1.0!" height="31" width="88" /></a>
124
- <a href="http://developer.berlios.de" title="BerliOS
125
- Developer"> <img
126
- src="http://developer.berlios.de/bslogo.php?group_id=5046"
127
- width="124px" height="32px" alt="BerliOS
128
- Developer Logo" /></a>
123
+ alt="Valid XHTML 1.0!" height="31" width="88"
124
+ border="0"/></a>
125
+
129
126
  </p>
130
127
 
131
128
  <!-- BlueRobot was here. -->
@@ -0,0 +1,134 @@
1
+ <?xml version="1.0" encoding="utf-8"?>
2
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN"
3
+ "http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd">
4
+ <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en">
5
+
6
+ <!--
7
+ <!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01//EN"
8
+ "http://www.w3.org/TR/html4/strict.dtd">
9
+
10
+ <html>
11
+ -->
12
+ <head>
13
+ <title>Rant</title>
14
+ <style type="text/css" media="screen">@import "rant_home.css";</style>
15
+ </head>
16
+
17
+ <body>
18
+
19
+ <div class="content">
20
+ <h1>Rant - Flexible, Ruby based make</h1>
21
+ <p>
22
+ Similar to make, the rant commandline tool reads a file called
23
+ Rantfile, which contains task definitions. Unlike make, however, an
24
+ Rantfile is just a valid script written in the Ruby programming
25
+ language. Since Ruby comes with many useful libraries and is
26
+ portable across many different operating systems, it's very easy to
27
+ write portable Rantfiles.
28
+ </p>
29
+ <h2>Striking features:</h2>
30
+ <ul>
31
+ <li>Defining custom tasks.</li>
32
+ <li>Automated packaging, testing and RDoc generation for Ruby
33
+ applications and libraries.</li>
34
+ <li>Creation of a monolithic script tailored to the needs of a
35
+ specific project which can be used instead of an Rant
36
+ installation - users don't need to install Rant.</li>
37
+ <li>Creating gzipped tar and zip archives -- without installing
38
+ additional software.
39
+ </li>
40
+ <li>Optional recognition of file changes based on MD5
41
+ checksums instead of file modification times.
42
+ </li>
43
+ <li>Primitive support for compiling C# sources with csc, cscc
44
+ and mcs.</li>
45
+ <li>Dependency checking for C/C++ source files (integrated
46
+ makedepend replacement).</li>
47
+ </ul>
48
+ </div>
49
+
50
+ <div class="content">
51
+ <h2>Getting started</h2>
52
+ <dl>
53
+ <dt>1. Install Ruby</dt>
54
+ <dd>
55
+ Issue the command: <tt>% ruby --version</tt> <br/>
56
+ which prints the Ruby version number you've installed. If it
57
+ isn't equal or higher to 1.8.0, get a newer version from the <a
58
+ href="http://www.ruby-lang.org/en/">Ruby homepage</a> or
59
+ the <a href="http://rubyforge.org/projects/rubyinstaller/">One-Click Installer for Windows</a>.
60
+ </dd>
61
+ <dt>2. Install Rant</dt>
62
+ <dd>
63
+ Issue the command: <tt>% gem install --remote rant</tt><br/>
64
+ which should download and install Rant. If you don't have the
65
+ gem command, download the package from <a
66
+ href="http://rubyforge.org/frs/?group_id=615">RubyForge</a>,
67
+ unpack it and run <tt>% ruby install.rb</tt>.
68
+ </dd>
69
+ <dt>3. Read the <strong>documentation</strong></dt>
70
+ <dd>If you want to start with the basics, continue <a
71
+ href="files/doc/rantfile_rdoc.html">here</a>.
72
+ </dd>
73
+ <dd>If you want to get an overview, continue <a
74
+ href="files/README.html">here</a>.
75
+ </dd>
76
+ </dl>
77
+ </div>
78
+
79
+ <div id="navAlpha">
80
+ <h2>Links</h2>
81
+ <p>
82
+ <a href="files/NEWS.html">ChangeLog</a><br/>
83
+ <!--a href="api.html">API docs</a><br/-->
84
+ <a href="http://rubyforge.org/projects/make/">Project page</a><br/>
85
+ <a title="Subscribe to mailing list"
86
+ href="http://rubyforge.org/mailman/listinfo/make-cafe">Mailing list</a><br/>
87
+ <a title="Browse mailing list archives"
88
+ href="http://rubyforge.org/pipermail/make-cafe/">List archives</a><br/>
89
+ <a
90
+ href="http://rubyforge.org/tracker/?func=add&amp;group_id=615&amp;atid=2428">Report a bug</a><br/>
91
+ <a title="Subversion repository for Rant development"
92
+ href="http://developer.berlios.de/svn/?group_id=5046">Repository</a><br/>
93
+ <a title="Browse source code repository."
94
+ href="http://svn.berlios.de/wsvn/rant">WebSVN</a><br/>
95
+ </p>
96
+ </div>
97
+
98
+ <div id="navBeta">
99
+ <h2>Documentation</h2>
100
+ <a href="files/README.html">User Manual</a><br/>
101
+ <hr/>
102
+ <h2>Updating</h2>
103
+ <p>
104
+ Always read the <a href="files/NEWS.html">ChangeLog</a>
105
+ before installing a newer version of Rant. It describes
106
+ non-backwards compatible changes and new features.
107
+ </p>
108
+ <h2>Rant libraries</h2>
109
+ <p>
110
+ You can reuse code written for the Rant build tool as
111
+ &quot;normal&quot; Ruby library. Read <a
112
+ href="files/doc/rubylib_rdoc.html">Rant libraries</a>
113
+ </p>
114
+ <h2>Rant vs. Rake</h2>
115
+ <p>
116
+ <a href="files/doc/rant_vs_rake_rdoc.html">Read comparison</a>
117
+ </p>
118
+ </div>
119
+
120
+ <p>
121
+ <a href="http://validator.w3.org/check?uri=referer"><img
122
+ src="http://www.w3.org/Icons/valid-xhtml10"
123
+ alt="Valid XHTML 1.0!" height="31" width="88" /></a>
124
+ <a href="http://developer.berlios.de" title="BerliOS
125
+ Developer"> <img
126
+ src="http://developer.berlios.de/bslogo.php?group_id=5046"
127
+ width="124px" height="32px" alt="BerliOS
128
+ Developer Logo" /></a>
129
+ </p>
130
+
131
+ <!-- BlueRobot was here. -->
132
+
133
+ </body>
134
+ </html>