summaryrefslogtreecommitdiff
path: root/scripts/cmd/copy.js
diff options
context:
space:
mode:
Diffstat (limited to 'scripts/cmd/copy.js')
-rw-r--r--scripts/cmd/copy.js124
1 files changed, 62 insertions, 62 deletions
diff --git a/scripts/cmd/copy.js b/scripts/cmd/copy.js
index f31fb3739..925990fe4 100644
--- a/scripts/cmd/copy.js
+++ b/scripts/cmd/copy.js
@@ -8,76 +8,76 @@ const { resolve, dirname, sep, join } = posix;
/** @type {import('arg').Spec} */
const spec = {
- '--tgz': Boolean,
+ '--tgz': Boolean,
};
export default async function copy() {
- let { _: patterns, ['--tgz']: isCompress } = arg(spec);
- patterns = patterns.slice(1);
+ let { _: patterns, ['--tgz']: isCompress } = arg(spec);
+ patterns = patterns.slice(1);
- if (isCompress) {
- const files = await glob(patterns, { gitignore: true });
- const rootDir = resolveRootDir(files);
- const destDir = rootDir.replace(/^[^/]+/, 'dist');
+ if (isCompress) {
+ const files = await glob(patterns, { gitignore: true });
+ const rootDir = resolveRootDir(files);
+ const destDir = rootDir.replace(/^[^/]+/, 'dist');
- const templates = files.reduce((acc, curr) => {
- const name = curr.replace(rootDir, '').slice(1).split(sep)[0];
- if (acc[name]) {
- acc[name].push(resolve(curr));
- } else {
- acc[name] = [resolve(curr)];
- }
- return acc;
- }, {});
+ const templates = files.reduce((acc, curr) => {
+ const name = curr.replace(rootDir, '').slice(1).split(sep)[0];
+ if (acc[name]) {
+ acc[name].push(resolve(curr));
+ } else {
+ acc[name] = [resolve(curr)];
+ }
+ return acc;
+ }, {});
- let meta = {};
- return Promise.all(
- Object.entries(templates).map(([template, files]) => {
- const cwd = resolve(join(rootDir, template));
- const dest = join(destDir, `${template}.tgz`);
- const metafile = files.find((f) => f.endsWith('meta.json'));
- if (metafile) {
- files = files.filter((f) => f !== metafile);
- meta[template] = JSON.parse(readFileSync(metafile).toString());
- }
- return fs.mkdir(dirname(dest), { recursive: true }).then(() =>
- tar.create(
- {
- gzip: true,
- portable: true,
- file: dest,
- cwd,
- },
- files.map((f) => f.replace(cwd, '').slice(1))
- )
- );
- })
- ).then(() => {
- if (Object.keys(meta).length > 0) {
- return fs.writeFile(resolve(destDir, 'meta.json'), JSON.stringify(meta, null, 2));
- }
- });
- }
+ let meta = {};
+ return Promise.all(
+ Object.entries(templates).map(([template, files]) => {
+ const cwd = resolve(join(rootDir, template));
+ const dest = join(destDir, `${template}.tgz`);
+ const metafile = files.find((f) => f.endsWith('meta.json'));
+ if (metafile) {
+ files = files.filter((f) => f !== metafile);
+ meta[template] = JSON.parse(readFileSync(metafile).toString());
+ }
+ return fs.mkdir(dirname(dest), { recursive: true }).then(() =>
+ tar.create(
+ {
+ gzip: true,
+ portable: true,
+ file: dest,
+ cwd,
+ },
+ files.map((f) => f.replace(cwd, '').slice(1))
+ )
+ );
+ })
+ ).then(() => {
+ if (Object.keys(meta).length > 0) {
+ return fs.writeFile(resolve(destDir, 'meta.json'), JSON.stringify(meta, null, 2));
+ }
+ });
+ }
- const files = await glob(patterns);
- await Promise.all(
- files.map((file) => {
- const dest = resolve(file.replace(/^[^/]+/, 'dist'));
- return fs.mkdir(dirname(dest), { recursive: true }).then(() => fs.copyFile(resolve(file), dest));
- })
- );
+ const files = await glob(patterns);
+ await Promise.all(
+ files.map((file) => {
+ const dest = resolve(file.replace(/^[^/]+/, 'dist'));
+ return fs.mkdir(dirname(dest), { recursive: true }).then(() => fs.copyFile(resolve(file), dest));
+ })
+ );
}
function resolveRootDir(files) {
- return files
- .reduce((acc, curr) => {
- const currParts = curr.split(sep);
- if (acc.length === 0) return currParts;
- const result = [];
- currParts.forEach((part, i) => {
- if (acc[i] === part) result.push(part);
- });
- return result;
- }, [])
- .join(sep);
+ return files
+ .reduce((acc, curr) => {
+ const currParts = curr.split(sep);
+ if (acc.length === 0) return currParts;
+ const result = [];
+ currParts.forEach((part, i) => {
+ if (acc[i] === part) result.push(part);
+ });
+ return result;
+ }, [])
+ .join(sep);
}