atiro
Version:
Useless OI Tools
105 lines (88 loc) • 3.23 kB
JavaScript
const { program } = require('commander');
const utils = require('./lib/utils.js');
const judger = require('./lib/judger.js');
const config = require('./lib/config.js');
const update = require('./lib/update.js');
const codeforces = require('./lib/codeforces.js');
const atcoder = require('./lib/atcoder.js');
const luogu = require('./lib/luogu.js');
const vjudge = require('./lib/vjudge.js');
const eastereggs = require('./lib/eastereggs.js');
const download = require('./lib/download.js');
const { reset } = require('./lib/data.js');
async function main() {
utils.start();
await update.start();
program
.name(require('./package.json').name)
.description('Useless OI Tools')
.version(require('./package.json').version, '-v, --version');
program.addHelpText('after', `
Turn to https://github.com/Sukwants/Atiro#readme to get more information!`);
program
.command('judge').alias('j')
.description('judge the answer')
.arguments('[file] [data]')
.option('-c, --comp <comp>', 'specify compilation options')
.option('-t, --time <time>', 'specify time limit')
.option('-j, --judg <judg>', 'specify judger')
.option('-g, --grad <grad>', 'specify grader')
.option('-s, --solv <solv>', 'specify solver')
.option('-m, --make <make>', 'specify maker')
.option('-a, --allj', 'force judging all the tests')
.option('-r, --reco', 'force recompiling all the source files')
.action(judger);
codeforces(program.command('codeforces').alias('cf').description('OJ tools for Codeforces'));
atcoder(program.command('atcoder').alias('at').description('OJ tools for AtCoder'));
luogu(program.command('luogu').alias('lg').description('OJ tools for Luogu'));
vjudge(program.command('vjudge').alias('vj').description('OJ tools for vjudge'))
program
.command('download').alias('d')
.description('download some common resources')
.arguments('<file>')
.action(download);
program
.command('config').alias('c')
.description('set the configurations')
.arguments('<key>')
.option('-g, --get', 'get the config value')
.option('-s, --set <value>', 'set the config value')
.option('-u, --unset', 'unset the config value')
.action(config.operate);
const commandUpdate = program
.command('update').alias('u')
.description(`detect new version`)
.action(update.update);
commandUpdate
.command('type').alias('t')
.description('query the detection type now')
.action(update.query);
commandUpdate
.command('notice').alias('n')
.description('notice when there is a new version')
.action(update.set('notice'));
commandUpdate
.command('ignore').alias('i')
.description('ignore new versions')
.action(update.set('ignore'));
program
.command('reset').alias('r')
.description('clear all of the data')
.action(reset);
switch (process.argv.slice(2).join(' ').trim()) {
case 'or orita':
eastereggs.atiro_or_orita();
break;
case '😉😉😉':
eastereggs.art_of_code();
break;
default:
program.parse(process.argv);
break;
}
process.on('beforeExit', () => {
utils.exit();
});
}
main();