int3/doppio — pull request #64 by jvilk (2012-11-09 21:12:22+00:00)
Title: In-Browser File System Support

We now have a virtual in-browser file system, which is exposed to Doppio through Node's filesystem and path APIs. The frontend has been reengineered to use this API rather than manipulate ``DoppioFile`` objects directly.

``javac`` 6 now works in the browser. You can also browse around the shell with ``cd``. Autocomplete now supports directories.

More notable, the filesystem is written with convenient abstractions that should make it simple to add a ``FIleSource`` for Google Drive, Dropbox, etc.

All I'd (or you'd) need to do is:

* Write a Google Drive or Dropbox extension to the ``FileSource`` object.
* Expose a ``mount`` function on ``FSState`` that calls ``add_source`` on its ``CompositedFileSource`` to add a new file source dynamically (simple).
* Somehow expose an API for mounting to Doppio, since we can't do this through the Node API.

**One important change**: For directory listings, you now need to generate a JSON file of all files that are reachable from the webserver. This was needed for ``javac`` support, which retrieves a directory listing of some of the folders on the classpath. I have added a tool that does this, and it runs when you ``make``.