Hey Michael.
I haven't used Plovr yet, but I have been following your work on it
for a while. I like the idea and the features, but I only casually
code, so I haven't spent much time in picking it up and trying it out.
Since I posted this, I've been working on a script that does pretty
much what you just described: given a config.json file (I even stole
your idea of allowing comments; hope you don't mind) that outlines the
entry points for a module, it reads in a given set of deps files
(generated by depswriter.py), analyzes the module and namespace
dependencies, and throws things into the lowest part of the tree that
works. It also handles the fancy module dependency graphs Plovr does.
Except I wrote mine in Javascript (run on top of Rhino-based RingoJS)
because I'm not very familiar with Java. My goal was to figure out
how this could best be done and then integrated back into the Compiler
so that an external tool is not needed. I would have tried this in
Java, but my Java skills are very lacking and I was able to pump out a
working prototype a lot faster.
The project is up on Google Code at:
http://code.google.com/p/closure-module-builder/
I started putting up a few wiki pages regarding the data structures
and algorithms I use, but they're not done yet. I'm not a code ninja,
so there are definitely areas for algorithm improvement, not to
mention a few corner cases I'm sure I've missed. I'm going to spend
some time building up a small sample app to try to exercise the cross
module namespace motion to find and patch the leaks.
By the way, thanks for the awesome book. I wouldn't have gotten this
far into Closure without it.