The beginnings of some command line testing code.

It strikes me that app/tests/lib is browser oriented so maybe having
app/tests/command-line is handy for tests which can run using only the
metapolator command line tool.

The fontforge-export-subset.py file is a utility that allows you to
cherry pick one or more glyphs from a font and export the result to a
new UFO file. Handy when you are only interested in a specific subset
of glyphs and don't want to congest the machine by having metapolator
work on glyphs that you are not interested in for the test at hand.

The command-line/interpolate subdirectory contains the start of a test
for non-glif interapolation. I started with test.sh and then moved that
to test.js so that xpath evaluation and other tools are supplied by
npm instead of various third party binaries on the system.

The test.js uses nexpect and xpath to start processes and test various
XML files in resulting UFO files by checking if nodes at specific locations
exist and have an expected content.

interpolate-for-non-glif-investigation.sh remains a shell script, it
is mostly a series of calls to the metapolator command line tool to
perform work.

Comments and suggestions welcome.
I thought the same thing, and this script initially did make the directory. I found that metapolator actually refuses to work if the workspace directory exists when you run an init command. Perhaps more users (than just us) would expect the init command to work if the workspace directory already exists and is empty?

    $ mkdir /tmp/empty123
    $ metapolator init /tmp/empty123
    
    /MP/app/lib/project/MetapolatorProject.js:82
                throw new ProjectError('Dir exists already: '+ dirName);
                      ^
    ProjectError: Dir exists already: /tmp/empty123
        at new MetapolatorProject.init (/MP/app/lib/project/MetapolatorProject.js:82:19)
        at Command.<anonymous> (/MP/app/commands/metapolator-init:30:35)
        at Command.listener (/MP/app/lib/npm_converted/commander/index.js:269:8)
        at Command.emit (events.js:95:17)
        at Command.parseArgs (/MP/app/lib/npm_converted/commander/index.js:507:12)
        at Command.parse (/MP/app/lib/npm_converted/commander/index.js:396:21)
        at /MP/app/commands/metapolator-init:32:17
        at Object.context.execCb (/MP/node_modules/requirejs/bin/r.js:1898:33)
        at Object.Module.check (/MP/node_modules/requirejs/bin/r.js:1114:51)
        at Object.Module.enable (/MP/node_modules/requirejs/bin/r.js:1391:22)
    
    $ metapolator init /tmp/empty123-doesntexist
    $