copy-folder-util
Version:
Recursively copy files from one folder to another folder (CLI tool designed for use in npm package.json scripts)
49 lines (44 loc) • 1.45 kB
JavaScript
//////////////////////
// copy-folder-util //
// MIT License //
//////////////////////
// Usage in package.json:
// "scripts": {
// "make-dist": "copy-folder build dist"
// },
//
// Usage from command line:
// $ npm install --save-dev copy-folder-util
// $ copy-folder build dist
// $ copy-folder src/web --ext=.js,.html docs
//
// Contributors to this project:
// $ cd copy-folder-util
// $ npm install
// $ npm test
// $ node bin/cli.js --cd=spec/fixtures source --ext=.js target/ext-js
// Imports
import { cliArgvUtil } from 'cli-argv-util';
import { copyFolder } from '../dist/copy-folder.js';
// Parameters and flags
const validFlags = ['cd', 'ext', 'note', 'quiet', 'summary'];
const cli = cliArgvUtil.parse(validFlags);
const source = cli.params[0];
const target = cli.params[1];
// Copy Folder
const error =
cli.invalidFlag ? cli.invalidFlagMsg :
!source ? 'Missing source folder.' :
!target ? 'Missing target folder.' :
cli.paramsCount > 2 ? 'Extraneous parameter: ' + cli.params[2] :
null;
if (error)
throw new Error('[copy-folder-util] ' + error);
const options = {
cd: cli.flagMap.cd ?? null,
fileExtensions: cli.flagMap.ext?.split(',') ?? [],
};
const results = copyFolder.cp(source, target, options);
if (!cli.flagOn.quiet)
copyFolder.reporter(results, { summaryOnly: cli.flagOn.summary });