== Rule recursion Since Rant 0.4.9, rules created with gen Rule no longer recurse. This means, that when looking for the Rule's source(s), this specific rule itself is ignored. This prevents infinite recursion. Consider: gen Rule, "o" => ".foo" do something end Say we call make "bo". Rant pre 0.4.9 behaviour: The rule matches anything ending in "o". Since "bo" ends in "o", the rule matches and searches for the source "b.foo". No task is defined for "b.foo", but again our only rule matches and thus searches for the source "b.fo.foo". Now we have our infinite recursion. Rant 0.4.9 and later behaviour: The only rule matches and searches for the source "b.foo". When a rule searches for a source, the rule itself is excluded. No infinite recursion. == Rant::Env.find_bin... ... should honour PATHEXT on windows. == Task alias Since +alias+ is a Ruby keyword, we could use +nick+ to create task alises. Other choices: short, cut, name, label, syn, synonym, ident, term, shortcut, abbreviation, link == Here docs Don't use here documents in the Rant sources, imports and plugins. They'll get messed up by the rant-import command. == More notes on rant-import rant-import removes all lines matching /^\s*#/ per default. Remember that, I was already bitten by that one in multiline regex! (FileList#mk_all_rx) == Running RDoc programmatically require 'rdoc/rdoc' rdoc = RDoc::RDoc.new begin rdoc.document(%w(like args from commandline)) rescue RDoc::RDocError $stderr.puts "Error when running rdoc: " + $!.message end == Changing the behaviour of Rant from Rantfiles Perhaps a method named like `behave' would be appropriate to to set options of the Rant application. == Subdirectories Allow the use of `#' at the start of a pathname to tell rant that it should be interpreted relative to the project's root directory. == Directory structure of +lib/+ +lib/+ contains only two entries: [rant.rb] Used to require rantlib and include +Rant+ for small build scripts. [rant/] All files matching /^rant\w+\.rb$/ are considered as Rant core. Others contain utilities, helper classes, Generators and similar. [rant/plugin] Each file ending in .rb in this directory is considered to load support for one Rant plugin. == Performance With version 0.2.6, the big performance problem with task lookup (caused very slow dependency resolving) is fixed. The next performance improvement should target Rantfile reading, especially task creation. == RubyPackage generator Currently, the package task(s) generated by RubyPackage doesn't recognize (and repackage) when files/directories are removed (from the sources). == Unit tests The unit tests contain many assertions of the form assert_equal(Rant.run(...), 0) which are wrong, because the first argument should be the expected result! == FileList < Array problems There arise some severe problems. E.g. the Array#flatten method: [FileList["*.rb"]].flatten The +flatten+ method doesn't call *any* method of our FileList but it recognizes that it is an Array and copies the elements directly. So there is *no* way to resolve the glob pattern and there will never any Ruby file be selected! == Subdirectories Rant would have to check and eventually +cd+ before doing one of the following: * Loading an Rantfile (even through +source+). * Worker#invoke * Worker#needed? * RantApp#run before returning. == RantContext#rantapp rename Rename +rantapp+ to +rac+. Done. == Circular dependencies Before Rant detected circular dependencies, we silently removed a task dependency on itself. Should we remove this mechanism now? == Testing Files/directories created during tests match the glob *.t* so don't give names matching this pattern to regular files, as they would soon be deleted! == Compiling C make uses the env. variables CC and CFLAGS. # vim:tw=70: