199 lines
4.6 KiB
JavaScript
199 lines
4.6 KiB
JavaScript
var fs = require("fs");
|
|
var path = require("path");
|
|
var exec = require("child_process").exec;
|
|
global.window = global;
|
|
require(__dirname + "/update.js");
|
|
require(__dirname + "/asset.js");
|
|
|
|
var updates = window.noname_update;
|
|
var newversion = false;
|
|
var commit = false;
|
|
if (process.argv[2]) {
|
|
if (/[0-9]/.test(process.argv[2][0])) {
|
|
newversion = true;
|
|
updates.update = updates.version;
|
|
updates.version = "1.9." + process.argv[2];
|
|
commit = updates.version;
|
|
} else {
|
|
commit = process.argv[2];
|
|
}
|
|
}
|
|
var assetlist = "";
|
|
var skinlist = "window.noname_skin_list={\n";
|
|
var entrylist = [];
|
|
var entrymap = {};
|
|
var get = function (dir, callback) {
|
|
fs.readdir(dir, function (err, list) {
|
|
var shift = function () {
|
|
if (list.length) {
|
|
var filename = list.shift();
|
|
var delay = false;
|
|
if (!/\.|~|_/.test(filename[0])) {
|
|
var url = dir + "/" + filename;
|
|
var stat = fs.statSync(url);
|
|
if (stat.isFile()) {
|
|
if (
|
|
[".jpg", ".png", ".mp3", ".ttf"].indexOf(
|
|
path.extname(url)
|
|
) != -1
|
|
) {
|
|
var assetentry = path.relative(
|
|
path.dirname(__dirname),
|
|
url
|
|
);
|
|
assetlist += ",\n\t'" + assetentry + "'";
|
|
entrylist.push(assetentry);
|
|
}
|
|
} else if (stat.isDirectory()) {
|
|
if (dir == path.dirname(__dirname) + "/image/skin") {
|
|
fs.readdir(url, function (err, list) {
|
|
var num = 0;
|
|
for (var i = 0; i < list.length; i++) {
|
|
var url2 = url + "/" + list[i];
|
|
var stat = fs.statSync(url2);
|
|
if (
|
|
stat.isFile() &&
|
|
path.extname(url2) == ".jpg"
|
|
) {
|
|
num++;
|
|
}
|
|
}
|
|
skinlist += "\t" + filename + ":" + num + ",\n";
|
|
entrymap[filename] = num;
|
|
shift();
|
|
});
|
|
delay = true;
|
|
} else {
|
|
get(url, shift);
|
|
delay = true;
|
|
}
|
|
}
|
|
}
|
|
if (!delay) {
|
|
shift();
|
|
}
|
|
} else {
|
|
callback();
|
|
}
|
|
};
|
|
shift();
|
|
});
|
|
};
|
|
|
|
get(path.dirname(__dirname), function () {
|
|
var diff = false;
|
|
if (window.noname_asset_list.length == entrylist.length + 1) {
|
|
for (var i = 0; i < entrylist.length; i++) {
|
|
if (entrylist[i] != window.noname_asset_list[i + 1]) {
|
|
diff = true;
|
|
break;
|
|
}
|
|
}
|
|
if (!diff) {
|
|
for (var i in entrymap) {
|
|
if (window.noname_skin_list[i] !== entrymap[i]) {
|
|
diff = true;
|
|
break;
|
|
}
|
|
}
|
|
for (var i in noname_skin_list) {
|
|
if (window.noname_skin_list[i] !== entrymap[i]) {
|
|
diff = true;
|
|
break;
|
|
}
|
|
}
|
|
}
|
|
} else {
|
|
diff = true;
|
|
}
|
|
var next = function () {
|
|
exec("git diff --name-only", (error, stdout, stderr) => {
|
|
var updatelist =
|
|
"window.noname_update={\n\tversion:'" + updates.version + "',";
|
|
updatelist += "\n\tupdate:'" + (updates.update || "") + "',";
|
|
var apply = function (name, list) {
|
|
updatelist += "\n\t" + name + ":[\n";
|
|
for (var i = 0; i < list.length; i++) {
|
|
updatelist += "\t\t'" + list[i] + "'";
|
|
if (i < list.length - 1) {
|
|
updatelist += ",";
|
|
}
|
|
updatelist += "\n";
|
|
}
|
|
updatelist += "\t]";
|
|
};
|
|
if (updates.changeLog) {
|
|
apply("changeLog", updates.changeLog);
|
|
updatelist += ",";
|
|
}
|
|
if (updates.players) {
|
|
apply("players", updates.players);
|
|
updatelist += ",";
|
|
}
|
|
if (updates.cards) {
|
|
apply("cards", updates.cards);
|
|
updatelist += ",";
|
|
}
|
|
var changes = stdout.split("\n");
|
|
for (var i = 0; i < changes.length; i++) {
|
|
var extname = path.extname(changes[i]);
|
|
if (
|
|
!changes[i] ||
|
|
(extname != ".js" && extname != ".css") ||
|
|
changes[i] == "game/update.js"
|
|
) {
|
|
changes.splice(i--, 1);
|
|
}
|
|
}
|
|
var files;
|
|
if (newversion) {
|
|
files = [];
|
|
} else {
|
|
files = updates.files || [];
|
|
}
|
|
for (var i = 0; i < changes.length; i++) {
|
|
if (files.indexOf(changes[i]) === -1) {
|
|
files.push(changes[i]);
|
|
}
|
|
}
|
|
files.sort(function (a, b) {
|
|
if (a > b) return 1;
|
|
if (a < b) return -1;
|
|
return 0;
|
|
});
|
|
apply("files", files);
|
|
fs.writeFile(
|
|
"game/update.js",
|
|
updatelist + "\n};",
|
|
"utf-8",
|
|
function () {
|
|
console.log("updated update.js");
|
|
if (commit && typeof commit === "string") {
|
|
exec("git add . && git commit -am " + commit);
|
|
console.log("committed " + commit);
|
|
}
|
|
}
|
|
);
|
|
});
|
|
};
|
|
if (diff) {
|
|
var assetversion =
|
|
"window.noname_asset_list=[\n\t'" + updates.version + "'";
|
|
fs.writeFile(
|
|
"game/asset.js",
|
|
assetversion +
|
|
assetlist +
|
|
"\n];\n" +
|
|
skinlist.slice(0, skinlist.length - 2) +
|
|
"\n};",
|
|
"utf-8",
|
|
function () {
|
|
console.log("udpated asset.js");
|
|
next();
|
|
}
|
|
);
|
|
} else {
|
|
next();
|
|
}
|
|
});
|