All files / kanbn index.js

100% Statements 44/44
85.71% Branches 12/14
100% Functions 1/1
100% Lines 44/44

Press n or j to go to the next uncovered block, b, p or k for the previous block.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 451x 1x 1x 1x 1x 219x 219x 219x 219x 219x 219x 219x 219x 219x 219x 219x 1x 1x 1x 218x 218x 218x 218x 218x 218x 218x 219x 4x 4x 4x 4x 4x 4x 218x 218x 218x 218x 218x 218x 218x 218x 218x 218x 1x  
const minimist = require('minimist');
const path = require('path');
const utility = require('./src/utility');
 
module.exports = async () => {
  require('dotenv').config({ path: path.join(__dirname, '.env') });
 
  // Get the command
  const command = process.argv[2] || '';
 
  // Load route configs and get the current route
  const routes = require('auto-load')(path.join(__dirname, 'routes')), route = {};
  const found = Object.entries(routes).find(([id, route]) => route.commands.indexOf(command) !== -1);
 
  // Make sure we have a valid route
  if (found === undefined) {
    utility.error(`"${command}" is not a valid command`);
    return;
  }
  ({ 0: route.id, 1: route.config } = found);
 
  // Check for help argument and override route if present
  const args = minimist(process.argv.slice(2), {
    boolean: ['help'],
    alias: { help: ['h'] }
  });
  if (route.id === 'help' || args.help) {
    const helpCommand = (c => args._.filter(arg => c.indexOf(arg) !== -1).pop() || 'help')(
      [...Object.values(routes).map(r => r.commands)].flat()
    );
    route.id = Object.keys(routes).find(k => routes[k].commands.indexOf(helpCommand) !== -1);
    route.config = routes.help;
  }
 
  // Parse arguments again using route-specific options and pass to the relevant controller
  await require(route.config.controller)(
    minimist(
      process.argv.slice(2),
      route.config.args
    ),
    process.argv,
    route.id
  );
};