@btapai/genie
Advanced tools
Comparing version 0.0.5 to 0.1.0
@@ -1,41 +0,26 @@ | ||
const fs = require('fs-extra'); | ||
const acquireBlueprints = require('./generate/acquire-blueprints'); | ||
const resolveBlueprint = require('./generate/resolve-blueprint'); | ||
const writeIntoFile = require('./generate/write-into-file'); | ||
const path = require('path'); | ||
const chalk = require('chalk'); | ||
const customSchematics = ''; | ||
function generate(schematicName, fileName, outputPath) { | ||
const schematics = acquireSchematics(schematicName); | ||
const resolvedName = schematics.resolver(fileName); | ||
const jsTemplate = schematics[ | ||
`${schematicName.toUpperCase()}_SYNTAX` | ||
].replace(/\[REPLACE\]/gm, resolvedName); | ||
const testTemplate = schematics[ | ||
`${schematicName.toUpperCase()}_MOCHA_TEST_TEMPLATE` | ||
] | ||
.replace(/\[FILENAME\]/gm, fileName) | ||
.replace(/\[REPLACE\]/gm, resolvedName); | ||
fs.ensureDirSync(outputPath); | ||
const filePath = path.join(outputPath, `${fileName}.js`); | ||
const specFilePath = path.join(outputPath, `${fileName}.spec.js`); | ||
fs.writeFileSync(filePath, jsTemplate); | ||
console.log(chalk.green(`created file:`, chalk.bold(filePath))); | ||
fs.writeFileSync(specFilePath, testTemplate); | ||
console.log(chalk.green(`created file:`, chalk.bold(specFilePath))); | ||
} | ||
function generate(configuration, blueprintName, fileName, outputPath) { | ||
const blueprint = acquireBlueprints(blueprintName); | ||
const { mainFile, mainTemplate, testFile, testTemplate } = resolveBlueprint( | ||
blueprint, | ||
blueprintName, | ||
fileName | ||
); | ||
const mainOutputPath = path.join( | ||
configuration.generationPaths.app, | ||
outputPath | ||
); | ||
const testOutputPath = path.join( | ||
configuration.generationPaths.test, | ||
outputPath | ||
); | ||
function acquireSchematics(schematicName) { | ||
let schematics; | ||
try { | ||
if (customSchematics) { | ||
console.log('try to get custom schematics'); | ||
} else { | ||
schematics = require(`../templates/${schematicName}`); | ||
} | ||
} catch (e) { | ||
throw new Error(`Could not find schematics for '${schematicName}'`); | ||
} | ||
return schematics; | ||
writeIntoFile(mainOutputPath, mainFile, mainTemplate); | ||
writeIntoFile(testOutputPath, testFile, testTemplate); | ||
} | ||
module.exports = generate; |
@@ -7,4 +7,5 @@ function help(command) { | ||
} | ||
process.exit(0); | ||
} | ||
module.exports = help; |
@@ -1,10 +0,27 @@ | ||
const defaultConfig = { | ||
parallelFiles: true, | ||
assertLib: 'mocha', | ||
}; | ||
const path = require('path'); | ||
const fs = require('fs-extra'); | ||
const defaultConfig = require('../configuration/default.config'); | ||
function getConfig(config) { | ||
return defaultConfig; | ||
function getExternalConfig(configPath) { | ||
let externalConfig = {}; | ||
try { | ||
externalConfig = fs.readJsonSync(path.join(configPath, '.genierc')); | ||
} catch (e) { | ||
if (e.code !== 'ENOENT') { | ||
throw e; | ||
} | ||
} | ||
return externalConfig; | ||
} | ||
function getConfig(configPath) { | ||
const externalConfig = getExternalConfig(configPath); | ||
const configuration = { | ||
...defaultConfig, | ||
...externalConfig, | ||
}; | ||
return configuration; | ||
} | ||
module.exports = getConfig; |
18
index.js
@@ -1,19 +0,5 @@ | ||
const generate = require('./app/commands/generate'); | ||
const help = require('./app/commands/help'); | ||
const path = require('path'); | ||
const genie = require('./app/genie'); | ||
const commands = process.argv.slice(2); | ||
try { | ||
const [command, schematics, fileName, relativePath] = commands; | ||
const outputPath = path.join(process.cwd(), relativePath); | ||
if (command === 'generate') { | ||
generate(schematics, fileName, outputPath); | ||
} else { | ||
help(); | ||
} | ||
process.exit(0); | ||
} catch (e) { | ||
console.error(e); | ||
process.exit(1); | ||
} | ||
genie(commands); |
{ | ||
"name": "@btapai/genie", | ||
"version": "0.0.5", | ||
"version": "0.1.0", | ||
"description": "A small, configurable command-line tool for developers, to generate resources based on their preferences", | ||
@@ -10,3 +10,5 @@ "main": "index.js", | ||
"scripts": { | ||
"test": "mocha \"app/**/*.spec.js\"", | ||
"test": "npm run test:unit && npm run test:functional", | ||
"test:unit": "nyc --reporter=html --report-dir=coverage/unit mocha \"app/**/*.spec.js\"", | ||
"test:functional": "nyc --reporter=html --report-dir=coverage/functional mocha \"test/functional/**/*.functional-spec.js\"", | ||
"lint": "eslint ./**/*.js", | ||
@@ -41,2 +43,3 @@ "lint:fix": "eslint ./**/*.js --fix" | ||
"mock-fs": "^4.7.0", | ||
"nyc": "^13.1.0", | ||
"prettier": "^1.15.3", | ||
@@ -43,0 +46,0 @@ "sinon": "^7.2.2" |
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Major refactor
Supply chain riskPackage has recently undergone a major refactor. It may be unstable or indicate significant internal changes. Use caution when updating to versions that include significant changes.
Found 1 instance in 1 package
Dynamic require
Supply chain riskDynamic require can indicate the package is performing dangerous or unsafe dynamic code execution.
Found 1 instance in 1 package
License Policy Violation
LicenseThis package is not allowed per your license policy. Review the package's license to ensure compliance.
Found 1 instance in 1 package
Dynamic require
Supply chain riskDynamic require can indicate the package is performing dangerous or unsafe dynamic code execution.
Found 1 instance in 1 package
9356
15
243
10
5
1