#!/usr/bin/env node
/*
 * An example using a sampling of dashdash's features. See "hello.js" and
 * "help.js" for smaller examples.
 */

var dashdash = require('../lib/dashdash');

// Specify the options. Minimally `name` (or `names`) and `type`
// must be given for each.
var options = [
    {
        name: 'version',              // `name` or `names`
        type: 'bool',
        help: 'Print tool version and exit.'
    },
    {
        names: ['help', 'h'],        // first name is opts key
        type: 'bool',
        help: 'Print this help and exit.'
    },
    {
        names: ['verbose', 'v'],
        type: 'arrayOfBool',
        env: 'FOO_VERBOSE',
        help: 'Verbose output. Use multiple times for more verbose.'
    },
    {
        names: ['b'],
        type: 'bool',
        help: 'A boolean arg',
    },
    {
        names: ['file', 'f'],
        type: 'string',
        env: 'FOO_FILE',
        help: 'File to process',
        helpArg: 'FILE'
    },
    {
        names: ['timeout', 't'],
        type: 'positiveInteger',
        env: 'FOO_TIMEOUT',
        help: 'Processing timeout in milliseconds',
        helpArg: 'MS'
    }
];

var parser = dashdash.createParser({options: options});
try {
    var opts = parser.parse(process.argv);
} catch (e) {
    console.error('foo: error: %s', e.message);
    process.exit(1);
}
// Or a shortcut:
//      var opts = dashdash.parse({options: options});

console.log("# opts:", opts);
console.log("# args:", opts._args);

// Use `parser.help()` for formatted options help.
if (opts.help) {
    var help = parser.help({includeEnv: true}).trimRight();
    console.log('usage: node foo.js [OPTIONS]\n'
                + 'options:\n'
                + help);
    process.exit(0);
}

// ...
