UNPKG

yos

Version:

lists your installed yeoman generators and subgenerators

51 lines (40 loc) 1.64 kB
#!/usr/bin/env node 'use strict'; const args = process.argv.slice(2); if (args.length && args[0] === '-h' || args[0] === '--help') { console.log('\n Usage: yos [options] [generator-name ...]\n'); console.log(' Options:\n\n -h, --help show usage help\n'); process.exit(1); } const env = require('yeoman-environment').createEnv(); env.lookup(() => { const generatorList = createGeneratorList(env, args); console.log(`Available Generators:\n${generatorList}`); }); function createGeneratorList(env, apps) { const generators = Object.keys(env.getGeneratorsMeta()).reduce((namesByGenerator, generator) => { const parts = generator.split(':'); const generatorName = parts.shift(); // Filter to specified generators, when specified if (!apps.length || apps.indexOf(generatorName) > -1) { // If first time we found this generator, prepare to save all its sub-generators if (!namesByGenerator[generatorName]) { namesByGenerator[generatorName] = []; } // If sub-generator (!== app), save it if (parts[0] !== 'app') { namesByGenerator[generatorName].push(parts.join(':')); } } return namesByGenerator; }, {}); if (!Object.keys(generators).length) { return '\n Couldn\'t find any generators, did you install any? Troubleshoot issues by running\n\n $ yo doctor'; } return Object.keys(generators).map(generator => { const subGenerators = generators[generator].map(subGenerator => { return ` ${subGenerator}`; }).join('\n'); return `\n ${generator}\n${subGenerators}`; }).join('\n').replace(/\n\n\n/g, '\n\n'); }