├── .editorconfig ├── .gitignore ├── LICENSE ├── README.md ├── index.js └── package.json /.editorconfig: -------------------------------------------------------------------------------- 1 | [*] 2 | indent_style = space 3 | indent_size = 2 4 | charset = utf-8 5 | trim_trailing_whitespace = true 6 | insert_final_newline = true 7 | 8 | [*.md] 9 | trim_trailing_whitespace = false 10 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | node_modules 2 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | Copyright (c) 2016 Buster Collings (http://about.me/buster) 2 | 3 | Permission to use, copy, modify, and/or distribute this software for 4 | any purpose with or without fee is hereby granted, provided that the 5 | above copyright notice and this permission notice appear in all 6 | copies. 7 | 8 | THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL 9 | WARRANTIES WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED 10 | WARRANTIES OF MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE 11 | AUTHOR BE LIABLE FOR ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL 12 | DAMAGES OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR 13 | PROFITS, WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER 14 | TORTIOUS ACTION, ARISING OUT OF OR IN CONNECTION WITH THE USE OR 15 | PERFORMANCE OF THIS SOFTWARE. 16 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | # yos 2 | > lists your installed yeoman generators and subgenerators 3 | 4 | ## Install 5 | 6 | ```sh 7 | $ npm install --global yos 8 | ``` 9 | 10 | ## Usage 11 | 12 | ```sh 13 | $ yos --help 14 | 15 | Usage: yos [options] [generator-name ...] 16 | 17 | Options: 18 | 19 | -h, --help show usage help 20 | 21 | ``` 22 | 23 | ## Examples 24 | 25 | _show all available generators:_ 26 | ```sh 27 | $ yos 28 | Available Generators: 29 | 30 | generator 31 | subgenerator 32 | 33 | nm 34 | 35 | backbone 36 | all 37 | collection 38 | model 39 | router 40 | view 41 | 42 | node 43 | boilerplate 44 | cli 45 | editorconfig 46 | eslint 47 | git 48 | gulp 49 | readme 50 | ``` 51 | 52 | _filtered:_ 53 | ```sh 54 | $ yos node nm 55 | Available Generators: 56 | 57 | nm 58 | 59 | node 60 | boilerplate 61 | cli 62 | editorconfig 63 | eslint 64 | git 65 | gulp 66 | readme 67 | ``` 68 | 69 | 70 | ## License 71 | 72 | ISC © [Buster Collings](http://about.me/buster) 73 | -------------------------------------------------------------------------------- /index.js: -------------------------------------------------------------------------------- 1 | #!/usr/bin/env node 2 | 3 | 'use strict'; 4 | 5 | const args = process.argv.slice(2); 6 | 7 | if (args.length && args[0] === '-h' || args[0] === '--help') { 8 | console.log('\n Usage: yos [options] [generator-name ...]\n'); 9 | console.log(' Options:\n\n -h, --help show usage help\n'); 10 | process.exit(1); 11 | } 12 | 13 | const env = require('yeoman-environment').createEnv(); 14 | 15 | env.lookup(() => { 16 | const generatorList = createGeneratorList(env, args); 17 | console.log(`Available Generators:\n${generatorList}`); 18 | }); 19 | 20 | function createGeneratorList(env, apps) { 21 | const generators = Object.keys(env.getGeneratorsMeta()).reduce((namesByGenerator, generator) => { 22 | const parts = generator.split(':'); 23 | const generatorName = parts.shift(); 24 | 25 | // Filter to specified generators, when specified 26 | if (!apps.length || apps.indexOf(generatorName) > -1) { 27 | // If first time we found this generator, prepare to save all its sub-generators 28 | if (!namesByGenerator[generatorName]) { 29 | namesByGenerator[generatorName] = []; 30 | } 31 | // If sub-generator (!== app), save it 32 | if (parts[0] !== 'app') { 33 | namesByGenerator[generatorName].push(parts.join(':')); 34 | } 35 | } 36 | return namesByGenerator; 37 | }, {}); 38 | 39 | if (!Object.keys(generators).length) { 40 | return '\n Couldn\'t find any generators. Have you installed any?\n\n Troubleshoot issues by running:\n $ yo doctor\n'; 41 | } 42 | 43 | return Object.keys(generators).map(generator => { 44 | const subGenerators = generators[generator].map(subGenerator => { 45 | return ` ${subGenerator}`; 46 | }).join('\n'); 47 | 48 | return `\n ${generator}\n${subGenerators}`; 49 | }).join('\n').replace(/\n\n\n/g, '\n\n'); 50 | } 51 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "yos", 3 | "version": "1.0.1", 4 | "description": "lists your installed yeoman generators and subgenerators", 5 | "repository": "busterc/yos", 6 | "files": [ 7 | "index.js" 8 | ], 9 | "bin": "index.js", 10 | "keywords": [ 11 | "yo", 12 | "yeoman", 13 | "generators", 14 | "generator", 15 | "subgenerators", 16 | "subgenerator", 17 | "sub-generators", 18 | "sub-generator", 19 | "list", 20 | "available" 21 | ], 22 | "author": "Buster Collings (https://about.me/buster)", 23 | "license": "ISC", 24 | "dependencies": { 25 | "yeoman-environment": "^1.5.2" 26 | } 27 | } 28 | --------------------------------------------------------------------------------