1 | import fs from 'fs';
|
2 | import path from 'path';
|
3 | import minify from '../';
|
4 |
|
5 | export function getFilesAndMinify(argv, opts) {
|
6 | argv.results = argv._
|
7 | .map(fileOrDir => {
|
8 | if (fs.statSync(fileOrDir).isDirectory()) {
|
9 | opts.logger.error('Directories are not supported.');
|
10 | throw new Error('Input file is a Directory');
|
11 | }
|
12 | return fileOrDir;
|
13 | })
|
14 | .map(file => ({
|
15 | contents: String(fs.readFileSync(file)),
|
16 | filename: file
|
17 | }))
|
18 | .map(({contents, filename}) => ({
|
19 | contents: minify(contents, argv),
|
20 | filename
|
21 | }));
|
22 | }
|
23 |
|
24 | export function putFiles(argv, opts) {
|
25 | argv.results
|
26 | .forEach(({contents, filename}) => {
|
27 | if (argv._.length === 1) {
|
28 | if (argv.output)
|
29 | fs.writeFileSync(argv.output, contents);
|
30 | else
|
31 | opts.logger.log(contents);
|
32 | } else {
|
33 | if (argv.outputDir) {
|
34 | const basename = path.basename(filename);
|
35 | fs.writeFileSync(path.join(argv.outputDir, basename), contents);
|
36 | } else {
|
37 | opts.logger.error('Output Directory unspecified');
|
38 | throw new Error('Output Directory unspecified');
|
39 | }
|
40 | }
|
41 | });
|
42 | }
|
43 |
|
44 | export function runTasks(argv, opts) {
|
45 | const tasks = [
|
46 | getFilesAndMinify,
|
47 | putFiles
|
48 | ];
|
49 | tasks.forEach(task => task(argv, opts));
|
50 | }
|