Skip to content

Commit 101db75

Browse files
committed
#16 overwrite no-overwrite feature
1 parent 1d6010f commit 101db75

File tree

3 files changed

+24
-1
lines changed

3 files changed

+24
-1
lines changed

cli.js

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ program
3535
.option('-b, --basedir <baseDir>', 'directory to use as the base when resolving local file references (defaults to OpenAPI file directory)')
3636
.option('-c, --curl', 'generate a curl scripts', false)
3737
.option('-s, --skipExistingFiles', 'skip existing files')
38+
.option('-d, --deleteFolders <folderName>', 'directory names to be deleted, e.g. "auto"')
3839
.parse(process.argv);
3940

4041
if (!openapiFile) {
@@ -49,7 +50,8 @@ generator.generate({
4950
templates: program.templates ? path.resolve(process.cwd(), program.templates) : undefined,
5051
curl: program.curl,
5152
template,
52-
skipExistingFiles: program.skipExistingFiles
53+
skipExistingFiles: program.skipExistingFiles,
54+
deleteFolders: program.deleteFolders
5355
}).then(() => {
5456
console.log(green('Done! ✨'));
5557
console.log(yellow('Check out your shiny new API at ') + magenta(program.output) + yellow('.'));

lib/generator.js

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -14,12 +14,31 @@ const randomName = require('project-name-generator');
1414
const registerPartial = require('./register-partial');
1515
const bundler = require('./bundler');
1616
const yellow = text => `\x1b[33m${text}\x1b[0m`;
17+
const findRemoveSync = require('find-remove');
1718

1819
const codegen = module.exports;
1920

2021
const HELPERS_DIRNAME = '.helpers';
2122
const PARTIALS_DIRNAME = '.partials';
2223

24+
/**
25+
* Deletes all matching subfolders in target directory
26+
*
27+
* @param {Object} config Configuration options
28+
* @returns {Promise}
29+
*/
30+
const deleteFolders = config => new Promise((resolve, reject) => {
31+
try {
32+
if (config.deleteFolders) {
33+
console.warn(yellow(`Deleting all subfolders named '${config.deleteFolders}' in ouput directory '${config.target_dir}'`));
34+
findRemoveSync(config.target_dir, {dir: config.deleteFolders});
35+
}
36+
resolve();
37+
} catch (e) {
38+
reject(e);
39+
}
40+
});
41+
2342
/**
2443
* Generates a file.
2544
*
@@ -316,6 +335,7 @@ codegen.generate = config => new Promise((resolve, reject) => {
316335
config.templates = `${config.templates}/${config.template}`;
317336

318337
async function start () {
338+
await deleteFolders(config);
319339
await registerHelpers(config);
320340
await registerPartials(config);
321341
await generateDirectoryStructure(config);

package.json

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -47,6 +47,7 @@
4747
"homepage": "https://github.com/fmvilas/openapi3-generator",
4848
"dependencies": {
4949
"commander": "^2.12.2",
50+
"find-remove": "^1.2.2",
5051
"fs.extra": "1.3.2",
5152
"handlebars": "^4.1.2",
5253
"js-yaml": "^3.13.1",

0 commit comments

Comments
 (0)