1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | var fs = require("fs");
|
4 | var path = require("path");
|
5 | var crc32 = require("crc32");
|
6 | var FileUtil_1 = require("./tool/FileUtil");
|
7 | var FileCrc32 = (function () {
|
8 | function FileCrc32(baseUrl) {
|
9 | var self = this;
|
10 | var xmUrl = self.getXMUrl(baseUrl);
|
11 | var relUrl = path.join(xmUrl, 'bin-release');
|
12 | FileUtil_1.FileUtil.rmdirSync(path.join(relUrl, 'resource'));
|
13 | var defaultUrl = path.join(xmUrl, 'resource', 'default.res.json');
|
14 | var defData = JSON.parse(fs.readFileSync(defaultUrl, 'utf-8'));
|
15 | var resources = defData.resources;
|
16 | var res;
|
17 | for (var i = 0, len = resources.length; i < len; i++) {
|
18 | res = resources[i];
|
19 | var resHash = '';
|
20 | var itemUrl = path.join(xmUrl, 'resource', res.url);
|
21 | if (res.type == 'sheet') {
|
22 | var filename = FileUtil_1.FileUtil.filename(itemUrl);
|
23 | var sheetJson = JSON.parse(fs.readFileSync(itemUrl, 'utf-8'));
|
24 | var pngNameArr = sheetJson.file.split('.');
|
25 | var hash = self.hashItem(path.join(path.dirname(itemUrl), sheetJson.file));
|
26 | sheetJson.file = pngNameArr[0] + '_' + hash + '.' + pngNameArr[1];
|
27 | resHash = self.hashItem(itemUrl, new Buffer(JSON.stringify(sheetJson)));
|
28 | }
|
29 | else {
|
30 | resHash = self.hashItem(itemUrl);
|
31 | }
|
32 | var resUrlArr = res.url.split('.');
|
33 | var ext = resUrlArr.pop();
|
34 | res.url = resUrlArr.join('.') + '_' + resHash + '.' + ext;
|
35 | }
|
36 | fs.writeFileSync(defaultUrl.replace(xmUrl, relUrl), new Buffer(JSON.stringify(defData, null, '\t')));
|
37 | }
|
38 | FileCrc32.prototype.hashItem = function (itemUrl, contents) {
|
39 | var self = this;
|
40 | if (!contents) {
|
41 | contents = fs.readFileSync(itemUrl);
|
42 | }
|
43 | var xmUrl = self.getXMUrl(itemUrl);
|
44 | var relUrl = path.join(xmUrl, 'bin-release');
|
45 | var hash = crc32(contents);
|
46 | var filename = FileUtil_1.FileUtil.filename(itemUrl);
|
47 | var toUrl = filename.replace(xmUrl, relUrl) + '_' + hash + path.extname(itemUrl);
|
48 | FileUtil_1.FileUtil.mkdirSync(path.dirname(toUrl));
|
49 | fs.writeFileSync(toUrl, contents);
|
50 | return hash;
|
51 | };
|
52 | FileCrc32.prototype.getXMUrl = function (url) {
|
53 | return '';
|
54 | };
|
55 | return FileCrc32;
|
56 | }());
|
57 | function run(baseUrl) {
|
58 | new FileCrc32(baseUrl);
|
59 | }
|
60 | exports.run = run;
|