UNPKG

924 BJavaScriptView Raw
1const fs = require('fs');
2const path = require('path');
3const eachRight = require('lodash/eachRight');
4const error = require('../error');
5
6let directories = [];
7
8const templateRegistry = {
9 add(dir) {
10 if (!fs.existsSync(dir)) {
11 throw error(`template directory '${dir}' is not exist.`);
12 }
13 directories.push(dir);
14 },
15 clear() {
16 directories = [];
17 },
18 resolveTemplatePath(name) {
19 if (path.isAbsolute(name)) {
20 if (fs.existsSync(name)) {
21 return name;
22 } else {
23 throw error(`cannot find template '${name}'.`);
24 }
25 }
26 let resolved = undefined;
27 eachRight(directories, (dir) => {
28 if (!resolved) {
29 const maybe = path.join(dir, name);
30 if (fs.existsSync(maybe)) resolved = maybe;
31 }
32 });
33 if (!resolved) {
34 throw error(`cannot find template '${name}'.`);
35 }
36 return resolved;
37 }
38};
39
40module.exports = templateRegistry;