1 | "use strict";
|
2 | var __importDefault = (this && this.__importDefault) || function (mod) {
|
3 | return (mod && mod.__esModule) ? mod : { "default": mod };
|
4 | };
|
5 | Object.defineProperty(exports, "__esModule", { value: true });
|
6 | const LoggerFactory_1 = __importDefault(require("./java/LoggerFactory"));
|
7 | const File_1 = __importDefault(require("./java/File"));
|
8 | const fs_1 = __importDefault(require("fs"));
|
9 | const path_1 = __importDefault(require("path"));
|
10 | const File = File_1.default;
|
11 | const ABSTRACT_SEARCH_PATHS = [path_1.default.join(__dirname, '..', 'resources')];
|
12 | class AbstractGenerator {
|
13 | writeToFile(filename, contents) {
|
14 | Log.info('writing file ' + filename);
|
15 | const f = new File(filename);
|
16 | f.getParentFile().mkdirs();
|
17 | return fs_1.default.writeFileSync(f.getPath(), contents, 'utf8');
|
18 | }
|
19 | readTemplate(name) {
|
20 | const reader = this.getTemplateReader(name);
|
21 | if (reader == null) {
|
22 | throw new Error(`no file found for "${name}"`);
|
23 | }
|
24 | return reader;
|
25 | }
|
26 | getTemplateReader(name) {
|
27 | const f = this._resolveFilePath(name);
|
28 | if (f == null) {
|
29 | throw new Error("can't load template " + name);
|
30 | }
|
31 | try {
|
32 | return fs_1.default.readFileSync(f, 'utf-8');
|
33 | }
|
34 | catch (e) {
|
35 | Log.trace(e);
|
36 | }
|
37 | }
|
38 | |
39 |
|
40 |
|
41 |
|
42 |
|
43 |
|
44 |
|
45 |
|
46 |
|
47 |
|
48 | getFullTemplateFile(config, templateFile) {
|
49 | const library = config.getLibrary();
|
50 | if (library) {
|
51 | const libTemplateFile = this._resolveFilePath(config.embeddedTemplateDir(), 'libraries', library, templateFile);
|
52 | if (libTemplateFile != null) {
|
53 | return libTemplateFile;
|
54 | }
|
55 | }
|
56 | const embeddedTemplate = this._resolveFilePath(config.embeddedTemplateDir(), templateFile);
|
57 | if (embeddedTemplate != null) {
|
58 | return embeddedTemplate;
|
59 | }
|
60 | const template = this._resolveFilePath(config.templateDir(), templateFile);
|
61 | if (template != null) {
|
62 | return template;
|
63 | }
|
64 | }
|
65 | readResourceContents(resourceFilePath) {
|
66 | const file = this._resolveFilePath(resourceFilePath);
|
67 | if (file == null) {
|
68 | Log.warn(`Could not resolve ${resourceFilePath}`);
|
69 | return;
|
70 | }
|
71 | return fs_1.default.readFileSync(file, 'utf8');
|
72 | }
|
73 | embeddedTemplateExists(name) {
|
74 | const f = this._resolveFile(name);
|
75 | return f != null;
|
76 | }
|
77 | getCPResourcePath(name) {
|
78 | if (!('/' === File.separator)) {
|
79 | return name.replace(new RegExp(File.separator, 'g'), '/');
|
80 | }
|
81 | return name;
|
82 | }
|
83 | _resolveFilePath(...paths) {
|
84 | const f = this._resolveFile(...paths);
|
85 | if (f == null) {
|
86 | return;
|
87 | }
|
88 | return f.getAbsolutePath();
|
89 | }
|
90 | _resolveFile(...paths) {
|
91 | for (const p of AbstractGenerator.SEARCH_PATHS) {
|
92 | const file = new File(p, ...paths);
|
93 | if (file.exists()) {
|
94 | return file;
|
95 | }
|
96 | }
|
97 | const last = new File(paths.shift(), ...paths);
|
98 | if (last.exists()) {
|
99 | return last;
|
100 | }
|
101 | }
|
102 | }
|
103 | exports.default = AbstractGenerator;
|
104 | AbstractGenerator.SEARCH_PATHS = ABSTRACT_SEARCH_PATHS;
|
105 | const Log = LoggerFactory_1.default.getLogger(AbstractGenerator);
|
106 |
|
\ | No newline at end of file |