UNPKG

g-resource

Version:

Generate resource scaffolding.

134 lines (117 loc) 3.04 kB
#!/usr/bin/env node 'use strict' /** * Dependencies */ const prompt = require('prompt') const fs = require('fs') /** * Configure prompt */ prompt.colors = false /** * Start prompt */ prompt.start() /** * Ask for resource name */ prompt.get({ properties: { resource: { description: 'What is the singular resource name? (i.e. Post)' } } }, (err, result) => { /** * Locals */ let resource = result.resource.toLowerCase() let resource_singular = resource let resource_plural = resource + 's' let router_name = resource + 's_router.js' let controller_name = resource + 's_controller.js' let model_name = resource + '.js' let router_test_name = resource + 's_router_test.js' let model_test_name = resource + '_test.js' let file_config = { "encoding": "utf8", "flag": 'wx', "mode": 0o755 } /** * Print resource paths */ console.log('\nCreating resource files:') console.log(' ./config/routes/' + router_name) console.log(' ./app/controllers/' + controller_name) console.log(' ./app/models/' + model_name) console.log(' ./test/features/' + router_test_name) console.log(' ./test/models/' + model_test_name) /** * Ensure resource directory structure exists */ fs.stat('./config/routes', (err, stats) => { if (err) { throw err } if (!stats.isDirectory()) { throw new Error('./config/routes is not a recognized directory.') } }) fs.stat('./app/controllers', (err, stats) => { if (err) { throw err } if (!stats.isDirectory()) { throw new Error('./app/controllers is not a recognized directory.') } }) fs.stat('./app/models', (err, stats) => { if (err) { throw err } if (!stats.isDirectory()) { throw new Error('./app/models is not a recognized directory.') } }) fs.stat('./test/features', (err, stats) => { if (err) { throw err } if (!stats.isDirectory()) { throw new Error('./test/features is not a recognized directory.') } }) fs.stat('./test/models', (err, stats) => { if (err) { throw err } if (!stats.isDirectory()) { throw new Error('./test/models is not a recognized directory.') } }) /** * Create resource files */ fs.writeFile(`./config/routes/${resource_plural}_router.js`, "'use strict'\n", file_config, (err) => { if (err) { throw err } } ) fs.writeFile(`./app/controllers/${resource_plural}_controller.js`, "'use strict'\n", file_config, (err) => { if (err) { throw err } } ) fs.writeFile(`./app/models/${resource_singular}.js`, "'use strict'\n", file_config, (err) => { if (err) { throw err } } ) fs.writeFile(`./test/features/${resource_plural}_router_test.js`, "'use strict'\n", file_config, (err) => { if (err) { throw err } } ) fs.writeFile(`./test/models/${resource_singular}_test.js`, "'use strict'\n", file_config, (err) => { if (err) { throw err } } ) })