rack-node
Version:
write like human, search like computer
50 lines (49 loc) • 1.73 kB
JavaScript
;
const command_1 = require("@oclif/command");
const CodeTokenProvider_1 = require("./core/CodeTokenProvider");
class RackNode extends command_1.Command {
async run() {
const { args, flags } = this.parse(RackNode);
let score;
switch (flags.score.toLowerCase()) {
case 'kkc':
score = CodeTokenProvider_1.Score.KKC;
break;
case 'kac':
score = CodeTokenProvider_1.Score.KAC;
break;
default:
score = CodeTokenProvider_1.Score.ALL;
}
const rawQuery = args.query.substr('--query='.length);
const result = await new CodeTokenProvider_1.default(rawQuery).recommendApi(score);
let message;
if (flags.quiet) {
message = result.map(([api]) => api).join(' ');
}
else {
message = result.map(([token, score]) => `${token}: ${score}`).join('\n');
}
this.log(message);
}
}
RackNode.description = 'write like human, search like computer';
RackNode.flags = {
// add --version flag to show CLI version
version: command_1.flags.version({ char: 'v' }),
help: command_1.flags.help({ char: 'h' }),
// flag with a value (-s, --score=VALUE)
score: command_1.flags.string({
char: 's',
description: 'the scoring to order suggestion',
default: 'all',
options: ['kac', 'kkc', 'all'],
}),
quiet: command_1.flags.boolean({
char: 'q',
description: 'only list the APIs',
default: false,
}),
};
RackNode.args = [{ name: 'query', required: true }];
module.exports = RackNode;