perryrh0dan/taskline

View on GitHub
cli.ts

Summary

Maintainability
A
0 mins
Test Coverage
#!/usr/bin/env node
import * as program from 'commander';

// START SNAPCRAFT IGNORE
import { UpdateNotifier } from 'update-notifier';
// END SNAPCRAFT IGNORE

import { Taskline } from './src/taskline';
import { Localization } from './src/localization';
import logger from './src/utils/logger';
import pkg = require('./package.json');
const taskline = new Taskline();

program.version(pkg.version);
program.description(pkg.description);

logger.info('Starting in Debug Mode');

program.name('tl').usage('[command] [options]');

program
  .command('archive')
  .alias('a')
  .description(Localization.instance.get('help.archive'))
  .action(() => {
    taskline.displayArchive().catch(() => {});
  });

program
  .command('begin <ids>')
  .alias('b')
  .description(Localization.instance.get('help.begin'))
  .action((ids) => {
    taskline.beginTasks(ids).catch(() => {});
  });

program
  .command('cancel <ids>')
  .description(Localization.instance.get('help.cancel'))
  .action((ids) => {
    taskline.cancelTasks(ids).catch(() => {});
  });

program
  .command('check <ids>')
  .alias('c')
  .description(Localization.instance.get('help.check'))
  .action((ids) => {
    taskline.checkTasks(ids).catch(() => {});
  });

program
  .command('clear')
  .description(Localization.instance.get('help.clear'))
  .action(() => {
    taskline.clear().catch(() => {});
  });

program
  .command('config')
  .description(Localization.instance.get('help.config'))
  .action(() => {
    taskline.displayConfig();
  });

program
  .command('copy <ids>')
  .alias('y')
  .description(Localization.instance.get('help.copy'))
  .action((ids) => {
    taskline.copyToClipboard(ids).catch(() => {});
  });

program
  .command('delete <ids>')
  .alias('d')
  .description(Localization.instance.get('help.delete'))
  .action((ids) => {
    taskline.deleteItems(ids).catch(() => {});
  });

program
  .command('due <ids> <dueDate>')
  .description(Localization.instance.get('help.due'))
  .action((ids, dueDate) => {
    taskline.updateDueDate(ids, dueDate).catch(() => {});
  });

program
  .command('edit <id> <description>')
  .alias('e')
  .description(Localization.instance.get('help.edit'))
  .action((id, description) => {
    taskline.editDescription(id, description).catch(() => {});
  });

program
  .command('find <terms>')
  .alias('f')
  .description(Localization.instance.get('help.find'))
  .action((query) => {
    taskline.findItems(query).catch(() => {});
  });

program
  .command('list <terms>')
  .alias('l')
  .description(Localization.instance.get('help.list'))
  .action((terms) => {
    taskline.listByAttributes(terms).then((grouped) => {
      taskline.displayStats(grouped);
    });
  });

program
  .command('move <ids> <boards')
  .alias('m')
  .description(Localization.instance.get('help.move'))
  .action((ids, boards) => {
    taskline.moveBoards(ids, boards).catch(() => {});
  });

program
  .command('note <description>')
  .alias('n')
  .description(Localization.instance.get('help.note'))
  .option('-b, --board <board>', 'Board')
  .action((description, opts) => {
    taskline.createNote(description, opts.board).catch(() => {});
  });

program
  .command('priority <id> <priority>')
  .alias('p')
  .description(Localization.instance.get('help.priority'))
  .action((id, priority) => {
    taskline.updatePriority(id, priority).catch(() => {});
  });

program
  .command('restore <ids>')

  .alias('r')
  .description(Localization.instance.get('help.restore'))
  .action((ids) => {
    taskline.restoreItems(ids).catch(() => {});
  });

program
  .command('star <ids>')
  .alias('s')
  .description(Localization.instance.get('help.star'))
  .action((ids) => {
    taskline.starItems(ids).catch(() => {});
  });

program
  .command('task <description>') // Sub-command name
  .alias('t') // Alternative sub-command is `al`
  .description(Localization.instance.get('help.task')) // Command description
  .option('-b, --board <board>', 'Board')
  .option('-p, --priority <priority>', 'Priority')
  .option('-d, --due <date>', 'Due date')

  // Function to execute when command is uses
  .action((description, opts) => {
    taskline
      .createTask(description, opts.board, opts.priority, opts.due)
      .catch(() => {});
  });

program
  .command('timeline')
  .alias('i')
  .description(Localization.instance.get('help.timeline'))
  .action(() => {
    taskline.displayByDate().then((grouped) => {
      taskline.displayStats(grouped);
    });
  });

program
  .command('refactor')
  .description(Localization.instance.get('help.refactor'))
  .action(() => {
    taskline.refactorIDs().catch(() => {});
  });

program.on('--help', function () {
  console.log('');
  console.log(
    'Detailed description under: https://github.com/perryrh0dan/taskline#flight-manual',
  );
});

if (process.argv.length === 2) {
  taskline.displayByBoard().then((grouped) => {
    return taskline.displayStats(grouped);
  });
}

program.on('command:*', function () {
  console.error(
    Localization.instance.getf('errors.invalidCommand', {
      params: program.args,
    }),
  );
  process.exit(1);
});

// START SNAPCRAFT IGNORE disable this for snap
new UpdateNotifier({
  pkg,
}).notify({ isGlobal: true });
// END SNAPCRAFT IGNORE

program.parse(process.argv);