g-resource
Version:
Generate resource scaffolding.
134 lines (117 loc) • 3.04 kB
JavaScript
/**
* 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 }
}
)
})