0
Fork 0
mirror of https://github.com/withastro/astro.git synced 2024-12-16 21:46:22 -05:00

forced degit template extraction in case of non empty installation directory (#937)

* revert recursive file removal routine

* forced degit overwrite without previous file removal

* add changeset
This commit is contained in:
mash-graz 2021-07-30 18:44:24 +02:00 committed by GitHub
parent 001594faa0
commit cf4c97cf54
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
2 changed files with 7 additions and 23 deletions

View file

@ -0,0 +1,5 @@
---
'create-astro': minor
---
forced degit template extraction in case of non empty installation directory

View file

@ -20,26 +20,6 @@ export function mkdirp(dir: string) {
}
}
/**
* Delete all files, subdirectories, and symlinks in a given
* directory.
*
* @param dir the directory to empty
* @returns a promise for emptying a given directory
*/
export async function emptyDir(dir: string) {
const items = await fs.promises.readdir(dir);
return Promise.all(
items.map(async (item) => {
const itemPath = path.join(dir, item);
const stat = await fs.promises.stat(itemPath);
return stat.isDirectory()
? fs.promises.rm(itemPath, { recursive: true, force: true }) // To remove directories
: fs.promises.unlink(itemPath); // Remove files and symlinks
})
);
}
const { version } = JSON.parse(fs.readFileSync(new URL('../package.json', import.meta.url), 'utf-8'));
const POSTPROCESS_FILES = ['package.json', 'astro.config.mjs', 'CHANGELOG.md']; // some files need processing after copying.
@ -57,14 +37,13 @@ export async function main() {
const response = await prompts({
type: 'confirm',
name: 'forceOverwrite',
message: `Directory not empty. Delete ${cwd} to continue?`,
message: 'Directory not empty. Continue [force overwrite]?',
initial: false,
});
if (!response.forceOverwrite) {
process.exit(1);
}
await emptyDir(cwd);
mkdirp(cwd);
}
} else {
mkdirp(cwd);