#!/usr/bin/env node

var resolveModule = require('resolve').sync;
var resolvePath = require('path').resolve;
var parseOpts = require('minimist');
var glob = require('glob');

var opts = parseOpts(process.argv.slice(2), {
        alias: { r: 'require' },
        string: 'require',
        default: { r: [] }
    });

var cwd = process.cwd();

if (typeof opts.require === 'string') {
    opts.require = [opts.require];
}

opts.require.forEach(function (module) {
    if (module) {
        /* This check ensures we ignore `-r ""`, trailing `-r`, or
         * other silly things the user might (inadvertently) be doing.
         */
        require(resolveModule(module, { basedir: cwd }));
    }
});

opts._.forEach(function (arg) {
    // If glob does not match, `files` will be an empty array.
    // Note: `glob.sync` may throw an error and crash the node process.
    var files = glob.sync(arg);

    if (!Array.isArray(files)) {
        throw new TypeError('unknown error: glob.sync did not return an array or throw. Please report this.');
    }

    files.forEach(function (file) {
        require(resolvePath(cwd, file));
    });
});

// vim: ft=javascript
