1 | const fs = require('fs');
|
2 | const pad = require('pad');
|
3 | const path = require('path');
|
4 | const chalk = require('chalk');
|
5 |
|
6 | exports.logger = logger;
|
7 | exports.ensureDirectoryExists = ensureDirectoryExists;
|
8 |
|
9 | const loggerInstances = {};
|
10 |
|
11 | function logger({ name }) {
|
12 | if (loggerInstances[name]) {
|
13 | return loggerInstances[name];
|
14 | }
|
15 |
|
16 | const instance = {
|
17 | name,
|
18 | log() {
|
19 | const args = Array.prototype.slice.call(arguments);
|
20 | const name = pad(7, this.name);
|
21 | const msg = args.join(' ');
|
22 | const row = `${chalk.gray(name + ':')} ${msg}`;
|
23 | console.log(row);
|
24 | }
|
25 | }
|
26 |
|
27 | loggerInstances[name] = instance;
|
28 | return instance;
|
29 | }
|
30 |
|
31 | const utilsLogger = logger({ name: 'utils' });
|
32 |
|
33 | function ensureDirectoryExists(filepath, basePath = null) {
|
34 | basePath = basePath ? basePath === '/' ? process.cwd() : basePath : process.cwd();
|
35 |
|
36 | let dirname = path.dirname(filepath);
|
37 | if (fs.existsSync(dirname)) {
|
38 | return true;
|
39 | }
|
40 | ensureDirectoryExists(dirname);
|
41 | fs.mkdirSync(dirname);
|
42 |
|
43 | const relDirname = path.relative(basePath, dirname);
|
44 | utilsLogger.log(chalk.blue(pad('mkdir', 5)), relDirname);
|
45 | } |
\ | No newline at end of file |