UNPKG

4.96 kBJavaScriptView Raw
1"use strict";
2var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
3 return new (P || (P = Promise))(function (resolve, reject) {
4 function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
5 function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
6 function step(result) { result.done ? resolve(result.value) : new P(function (resolve) { resolve(result.value); }).then(fulfilled, rejected); }
7 step((generator = generator.apply(thisArg, _arguments)).next());
8 });
9};
10const _1 = require("./");
11const c = require("./config");
12const utils = require("egret-node-utils");
13const fs = require("fs-extra-promise");
14const path = require("path");
15let projectRoot;
16function build(p) {
17 return __awaiter(this, void 0, void 0, function* () {
18 let result = yield _1.ResourceConfig.init(p);
19 _1.ResourceConfig.typeSelector = result.typeSelector;
20 if (!_1.ResourceConfig.typeSelector) {
21 throw new Error("missing typeSelector in Main.ts");
22 }
23 let executeFilter = (f) => __awaiter(this, void 0, void 0, function* () {
24 let config = _1.ResourceConfig.config;
25 var ext = f.substr(f.lastIndexOf(".") + 1);
26 let type = _1.ResourceConfig.typeSelector(f);
27 if (type) {
28 return { name: f, url: f, type };
29 }
30 });
31 projectRoot = p;
32 let resourcePath = path.join(projectRoot, result.resourceRoot);
33 let filename = path.join(resourcePath, result.resourceConfigFileName);
34 let option = {
35 relative: true,
36 ignoreHiddenFile: true
37 };
38 let list = yield utils.walk(resourcePath, () => true, option);
39 let files = yield Promise.all(list.map(executeFilter));
40 files.filter(a => a).forEach(element => _1.ResourceConfig.addFile(element));
41 yield convertResourceJson(projectRoot);
42 yield updateResourceConfigFileContent(filename);
43 });
44}
45exports.build = build;
46function updateResourceConfigFileContent(filename) {
47 return __awaiter(this, void 0, void 0, function* () {
48 let content = JSON.stringify(_1.ResourceConfig.config, null, "\t");
49 yield fs.writeFileAsync(filename, content, "utf-8");
50 return content;
51 // var c = ResourceConfig.config;
52 // let content = await updateResourceConfigFileContent_2(filename, "exports.resources", c.resources);
53 // content = await updateResourceConfigFileContent_2(filename, "exports.groups", c.groups);
54 // content = await updateResourceConfigFileContent_2(filename, "exports.alias", c.alias);
55 // return content;
56 });
57}
58exports.updateResourceConfigFileContent = updateResourceConfigFileContent;
59function updateResourceConfigFileContent_2(filename, matcher, data) {
60 return __awaiter(this, void 0, void 0, function* () {
61 let content = yield c.publish(filename, matcher, data);
62 yield fs.writeFileAsync(filename, content, "utf-8");
63 return content;
64 });
65}
66function convertResourceJson(projectRoot) {
67 return __awaiter(this, void 0, void 0, function* () {
68 let filename = path.join(projectRoot, "resource/default.res.json");
69 if (!fs.existsSync(filename)) {
70 filename = path.join(projectRoot, "resource/resource.json");
71 }
72 if (!fs.existsSync(filename)) {
73 return;
74 }
75 let config = _1.ResourceConfig.config;
76 let resourceJson = yield fs.readJSONAsync(filename);
77 // let resourceJson: original.Info = await fs.readJSONAsync(resourceJsonPath);
78 for (let r of resourceJson.resources) {
79 config.alias[r.name] = r.url;
80 let file = _1.ResourceConfig.getFile(r.url);
81 for (var resource_custom_key in r) {
82 if (resource_custom_key == "url" || resource_custom_key == "type" || resource_custom_key == "name") {
83 continue;
84 }
85 else if (resource_custom_key == "subkeys") {
86 var subkeysArr = r.subkeys.split(",");
87 for (let subkey of subkeysArr) {
88 // if (!obj.alias[subkeysArr[i]]) {
89 config.alias[subkey] = r.url + "#" + subkey;
90 }
91 }
92 else {
93 if (typeof file != "string") {
94 file[resource_custom_key] = r[resource_custom_key];
95 }
96 else {
97 console.warn(`missing properties ${resource_custom_key} in ${file}`);
98 }
99 }
100 }
101 }
102 for (let group of resourceJson.groups) {
103 config.groups[group.name] = group.keys.split(",");
104 }
105 return _1.ResourceConfig.config;
106 });
107}
108exports.convertResourceJson = convertResourceJson;