-
Notifications
You must be signed in to change notification settings - Fork 1
/
Copy pathindex.js
76 lines (59 loc) · 1.75 KB
/
index.js
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
'use strict';
const fs = require('fs');
// https://stackoverflow.com/a/41407246/7167015
const consoleColors = {
Reset: "\x1b[0m",
Bright: "\x1b[1m",
Dim: "\x1b[2m",
Underscore: "\x1b[4m",
Blink: "\x1b[5m",
Reverse: "\x1b[7m",
Hidden: "\x1b[8m",
FgBlack: "\x1b[30m",
FgRed: "\x1b[31m",
FgGreen: "\x1b[32m",
FgYellow: "\x1b[33m",
FgBlue: "\x1b[34m",
FgMagenta: "\x1b[35m",
FgCyan: "\x1b[36m",
FgWhite: "\x1b[37m",
BgBlack: "\x1b[40m",
BgRed: "\x1b[41m",
BgGreen: "\x1b[42m",
BgYellow: "\x1b[43m",
BgBlue: "\x1b[44m",
BgMagenta: "\x1b[45m",
BgCyan: "\x1b[46m",
BgWhite: "\x1b[47m"
};
const getCurrentTime = () => {
const date = new Date();
let hour = date.getHours();
hour = (hour < 10 ? '0' : '') + hour;
let min = date.getMinutes();
min = (min < 10 ? '0' : '') + min;
let sec = date.getSeconds();
sec = (sec < 10 ? '0' : '') + sec;
return `${hour}:${min}:${sec}`;
};
const exitProcess = (msg) => {
const {BgRed, FgBlack, Reset} = consoleColors;
console.error(`${BgRed}${FgBlack}%s${Reset}`, `[${getCurrentTime()}] Inline Assets: ✘ ${msg}`);
process.exit(1);
};
module.exports = (patternlab) => {
if (!patternlab) {
exitProcess('Pattern Lab not provided to plugin-init');
}
patternlab.engines.handlebars.engine.registerHelper('inline-asset', (file) => {
const {FgCyan, Reset} = consoleColors;
let content = '';
try {
console.info(`${FgCyan}%s${Reset}`, `→ Inlining asset "${file}" ...`);
content = fs.readFileSync(file);
} catch (e) {
exitProcess(`No such file "${file}". Did you misspell something?`);
}
return content;
});
};