UNPKG

@s3dking/randomjoke

Version:

Choose a random dad joke

113 lines (106 loc) 3.18 kB
#!/usr/bin/env node const { joke } = require('./index.js'); const yargs = require('yargs/yargs'); const { hideBin } = require('yargs/helpers'); const argv = yargs(hideBin(process.argv)) .usage('Usage: randomjoke <command> [options]') .command('get', 'Get jokes', { type: { alias: 't', describe: 'Type of joke (dad/dark/programming/puns)', type: 'string', default: 'dad' }, amount: { alias: 'a', describe: 'Number of jokes to generate', type: 'number', default: 1 }, numbered: { alias: 'n', describe: 'Number the jokes', type: 'boolean', default: false } }) .command('rate', 'Rate a joke', { type: { alias: 't', describe: 'Type of joke', type: 'string', required: true }, index: { alias: 'i', describe: 'Joke index', type: 'number', required: true }, rating: { alias: 'r', describe: 'Rating (1-5)', type: 'number', required: true } }) .command('submit', 'Submit a new joke', { text: { alias: 'x', describe: 'Joke text', type: 'string', required: true }, type: { alias: 't', describe: 'Joke type', type: 'string', required: true }, tags: { alias: 'g', describe: 'Tags (comma-separated)', type: 'string', default: '' } }) .command('top', 'Get top rated jokes', { type: { alias: 't', describe: 'Type of joke', type: 'string', required: true }, limit: { alias: 'l', describe: 'Number of jokes', type: 'number', default: 10 } }) .help('h') .alias('h', 'help') .example('randomjoke get', 'Generates one dad joke') .example('randomjoke get -t dark -a 3 -n', 'Generates 3 numbered dark jokes') .example('randomjoke rate -t dad -i 1 -r 5', 'Rates the first dad joke with 5 stars') .example('randomjoke submit -x "Why did the chicken cross the road?" -t dad', 'Submits a new dad joke') .example('randomjoke top -t dad -l 5', 'Gets the top 5 dad jokes') .argv; try { // Handle positional arguments if provided const [type, amount, numbered] = argv._; const options = { type: type || argv.type, jokes: Number(amount) || argv.amount, numbered: numbered === 'true' || argv.numbered }; const result = joke.generate(options); if (typeof result === 'object') { Object.values(result).forEach(j => console.log(j)); } else { console.log(result); } } catch (error) { console.error('Error:', error.message); process.exit(1); }