= TODO == Improve SourceNode types Currently a SourceNode can only have other SourceNodes or files as prerequisites. But if e.g., a header file should be autogenerated, this isn't sufficient anymore. --- Update Done (0.4.3) for SignedSourceNodes. == Deprecate plugin API ... and provide alternatives for the Configure and CSharp plugins. == FileList FileList objects need a method which adds a file which won't be removed by any pattern (also not affected by var[:ignore]). --- Done (0.4.3). Use FileList#<< to append a single entry which won't be removed by exclude/ignore patterns. == Semantics of directories as prerequisites of file creating nodes. Currently there are two so called "file creating" nodes: FileTask and SignedFile. The following treatments of a directory as prerequisite are possible: 1. Current behaviour: FileTask:: If a directory node exists, invoke it and compare if the modification time of the directory is newer than the target file. SignedFile:: If a directory node exists, invoke it. If the invocation return true, rebuild target file. If no directory node exists, create a signature of the directory by reading its entries and check this signature against the signature of the last time the target file was built. 2. Just check if a directory node exists and invoke it. Trigger target rebuild if +invoke+ returns true. If no node exists do nothing special, the directory doesn't trigger a target file rebuild. I'm currently in favour of #2. --- *Update* Current behaviour: FileTask:: If a directory node exists, invoke it and compare if the modification time of the directory is newer than the target file. If no node exists, just compare the modification time. SignedFile:: If a directory node exists, invoke it and trigger a rebuild if +invoke+ returns true. Anyway create a signature of the path, which results in a rebuild if the directory path changes once. This could be considered an inconsistency since path/name changes of other prerequisites don't trigger a rebuild. == Don't use testrb as testrunner for RubyTest. == Solve archiving dependency problem Because of timed depdencies, the archiving tasks don't recognize if the only change is that a file was removed. The only exception is a primitive +Archive+ task whith manifest synchronization. The problem can be solved by writing a list of files parallel to archive creation or to write a signature of the filelist. == Dependency alternation Allow at least two tasks as one dependency where the first available will actually used to satisfy the dependency, pseudo code: task :a => :b | :c Rant should first try :b and if the task :b exists and succeds :c won't be considered, if task :b doesn't exist, rant should try to make :c. == GET RID OF CLASS Rant::Path Done (0.3.7). == Packaging Try minitar if tar is not available. Done (0.3.9). == C# plugin Define the method +assembly+ for building a file with the C# compiler? Done. == Predefined tasks Add a 'distclean' task that removes all files and directories generatet by any file task. Done (AutoClean generator). == Java plugin At least for the 1.0.0 release. #-- # vim:tw=70