DaZoner said:
> I've read the rake docs online and I've got a very simple rakefile to
> work.
> Now I'd like to make it more complex and I can't figure out how to do it.
> Can anyone let me know if what I want to do is possible and how to do it?
>
> Why doesn't the following rakefile print "Making ..."?
>
> task :default => [:build]
>
> task :build do
>   print "In build\n"
>   file "newzip.zip"  do |t|
>     print "Making ",t.name,"\n"
>   end
> end

Hi DaZoner ... welcome to Rake!

Let me rewrite your Rakefile and then talk about the changes ... I think
you were wanting something along these lines ...

  task :default => [:build]

  task :build => ["newzip.zip"] do
    puts "Done building"
  end

  file "newzip.zip"  do |t|
    print "Making ",t.name,"\n"
  end

In your version, you nested the newzip.zip file task inside the build
task.  That meant that the task wasn't defined until you invoked build. 
That's a perfectly fine thing to do and is great for the dynamic building
of tasks, but its a more advanced concept.  I suspect you only want the
build task to invoke the newzip.zip task whenever necessary.  So, put both
tasks at the top level and list newzip.zip as a dependency of build.

The other subtle thing is that the message "In Build" prints *after* the
newzip.zip task is complete.  The body of a task only executes after all
the prerequisites are finished.  I changed the message to read "Build
Done" to emphasize that.

> Also I'd like to give the filetask prereq's saying only do this step if
> the
> file is out of date with *.rb and data/*.dat. Can I do this? Does it look
> like this?
>
> file "zipfile.zip" => ["*.rb","data/*.dat"] do |t|
> end

Close.  "*.rb" is not a file name, but a pattern for a file name.  It must
be expanded to a list of files to be useful.  You can use a FileList
object to do that ...

  file "zipfile.zip" => FileList['*.rb', 'data/*.dat'] do |t| ... end

-- 
-- Jim Weirich     jim / weirichhouse.org    http://onestepback.org
-----------------------------------------------------------------
"Beware of bugs in the above code; I have only proved it correct,
not tried it." -- Donald Knuth (in a memo to Peter van Emde Boas)