bin/cli

Summary

Maintainability
Test Coverage
#!/usr/bin/env node

const cli = require('commander');
const updateNotifier = require('update-notifier');
const flatten = require('lodash').flatten;

const commands = require('../src/getCommands')();
const config = require('../src/config');
const pkg = require('../package.json');

updateNotifier({ pkg }).notify();

cli.version(pkg.version);

const defaultOptParser = (val) => val;

const addCommand = (command) => {
  const cmd = cli
    .command(command.name)
    .usage(command.usage)
    .description(command.description)
    .action(function runAction() {
      command.func(config, arguments, this.opts());
    });

  (command.options || [])
    .forEach(opt => cmd.option(
      opt.flags,
      opt.description,
      opt.parse || defaultOptParser,
      opt.default
    ));
};

flatten(commands).forEach(addCommand);

cli.parse(process.argv);