Skip to content

Commit 2b51906

Browse files
committed
revert: feat!: don't overwrite files by default to preserve user's modifications and introduce --overwrite option to turn this off
This reverts commit c78fdfa. Relate to #33 This also fixes #34 because the code that caused error has been removed.
1 parent 30a8431 commit 2b51906

File tree

4 files changed

+12
-42
lines changed

4 files changed

+12
-42
lines changed

.github/workflows/generate-go-app.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ jobs:
2121
- name: Install project dependencies
2222
run: npm ci --no-audit --no-fund # https://docs.npmjs.com/cli/v8/commands/npm-ci
2323
- name: Generate Golang + Chi application
24-
run: ../../src/cli.js --overwrite --lang go
24+
run: ../../src/cli.js --lang go
2525
working-directory: examples/go
2626
- name: Check whether files were modified
2727
run: git status --short

.github/workflows/generate-js-app.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ jobs:
2121
- name: Install project dependencies
2222
run: npm ci --no-audit --no-fund # https://docs.npmjs.com/cli/v8/commands/npm-ci
2323
- name: Generate JavaScript + Express application
24-
run: ../../src/cli.js --overwrite --lang js
24+
run: ../../src/cli.js --lang js
2525
working-directory: examples/js
2626
- name: Check whether files were modified
2727
run: git status --short

.github/workflows/generate-python-app.yml

+1-1
Original file line numberDiff line numberDiff line change
@@ -21,7 +21,7 @@ jobs:
2121
- name: Install project dependencies
2222
run: npm ci --no-audit --no-fund # https://docs.npmjs.com/cli/v8/commands/npm-ci
2323
- name: Generate Python + FastAPI application
24-
run: ../../src/cli.js --overwrite --lang python
24+
run: ../../src/cli.js --lang python
2525
working-directory: examples/python
2626
- name: Check whether files were modified
2727
run: git status --short

src/cli.js

+9-39
Original file line numberDiff line numberDiff line change
@@ -16,12 +16,9 @@ const parseCommandLineArgs = (args) => {
1616
const opts = {
1717
// @todo #24 Document --dest-dir option
1818
'string': [ 'lang', 'dest-dir' ],
19-
// @todo #33 Document --overwrite option
20-
'boolean': [ 'overwrite' ],
2119
'default': {
2220
'lang': 'js',
23-
'dest-dir': '.',
24-
'overwrite': false,
21+
'dest-dir': '.'
2522
}
2623
}
2724
const argv = parseArgs(args, opts)
@@ -90,30 +87,7 @@ const findFileNamesEndWith = (dir, postfix) => {
9087
return fs.readdirSync(dir).filter(name => name.endsWith(postfix))
9188
}
9289

93-
const stripPrefix = (text, prefix) => {
94-
if (text.startsWith(prefix)) {
95-
return text.slice(prefix.length)
96-
}
97-
return text
98-
}
99-
100-
const fileExistsHandler = (err) => {
101-
if (err === null) {
102-
// Success
103-
return
104-
}
105-
//console.log(err)
106-
if (err.code === 'EEXIST') {
107-
// copyFile() puts original file name in err.path, so we use err.dest in that case
108-
const filePath = err.dest || err.path
109-
const file = stripPrefix(filePath, process.cwd() + '/')
110-
console.warn(`WARNING: File ${file} already exists and won't be rewritten to preserve possible modifications. In order to overwrite the file, re-run the application with --overwrite option`)
111-
return
112-
}
113-
throw err
114-
}
115-
116-
const createApp = async (destDir, { lang, overwrite }) => {
90+
const createApp = async (destDir, { lang }) => {
11791
const ext = lang2extension(lang)
11892
const fileName = `app.${ext}`
11993
console.log('Generate', fileName)
@@ -132,20 +106,18 @@ const createApp = async (destDir, { lang, overwrite }) => {
132106
}
133107
)
134108

135-
const fsFlags = overwrite ? 'w' : 'wx'
136-
return fsPromises.writeFile(resultFile, resultedCode, { 'flag': fsFlags }).catch(fileExistsHandler)
109+
return fsPromises.writeFile(resultFile, resultedCode)
137110
}
138111

139-
const createDb = async (destDir, { lang, overwrite }) => {
112+
const createDb = async (destDir, { lang }) => {
140113
if (lang !== 'python') {
141114
return
142115
}
143116
const fileName = 'db.py'
144117
console.log('Generate', fileName)
145118
const resultFile = path.join(destDir, fileName)
146119

147-
const mode = overwrite ? 0 : fsPromises.constants.COPYFILE_EXCL
148-
return fsPromises.copyFile(`${__dirname}/templates/${fileName}`, resultFile, mode).catch(fileExistsHandler)
120+
return fsPromises.copyFile(`${__dirname}/templates/${fileName}`, resultFile)
149121
}
150122

151123
// "-- comment\nSELECT * FROM foo" => "SELECT * FROM foo"
@@ -182,7 +154,7 @@ const lengthOfLongestString = (arr) => arr
182154
0 /* initial value */
183155
)
184156

185-
const createEndpoints = async (destDir, { lang, overwrite }, config) => {
157+
const createEndpoints = async (destDir, { lang }, config) => {
186158
const ext = lang2extension(lang)
187159
const fileName = `routes.${ext}`
188160
console.log('Generate', fileName)
@@ -306,11 +278,10 @@ const createEndpoints = async (destDir, { lang, overwrite }, config) => {
306278
}
307279
)
308280

309-
const fsFlags = overwrite ? 'w' : 'wx'
310-
return fsPromises.writeFile(resultFile, resultedCode, { 'flag': fsFlags }).catch(fileExistsHandler)
281+
return fsPromises.writeFile(resultFile, resultedCode)
311282
}
312283

313-
const createDependenciesDescriptor = async (destDir, { lang, overwrite }) => {
284+
const createDependenciesDescriptor = async (destDir, { lang }) => {
314285
let fileName
315286
if (lang === 'js') {
316287
fileName = 'package.json'
@@ -342,8 +313,7 @@ const createDependenciesDescriptor = async (destDir, { lang, overwrite }) => {
342313
}
343314
)
344315

345-
const fsFlags = overwrite ? 'w' : 'wx'
346-
return fsPromises.writeFile(resultFile, minimalPackageJson, { 'flag': fsFlags }).catch(fileExistsHandler)
316+
return fsPromises.writeFile(resultFile, minimalPackageJson)
347317
}
348318

349319
const showInstructions = (lang) => {

0 commit comments

Comments
 (0)