131 lines
3.1 KiB
JavaScript
131 lines
3.1 KiB
JavaScript
var fs = require('fs');
|
|
var path = require('path');
|
|
var crypto = require('crypto');
|
|
|
|
var url = 'https://www.cebg.games/pubgv4/';
|
|
// var url = 'https://test.kingsome.cn/game2006/test/';
|
|
|
|
var manifest = {
|
|
packageUrl: url,
|
|
remoteManifestUrl: url + 'project.manifest',
|
|
remoteVersionUrl: url + 'version.manifest',
|
|
version: '0.1.0',
|
|
assets: {},
|
|
searchPaths: [],
|
|
};
|
|
|
|
var dest = './hotupdate/';
|
|
var src = './build/jsb-link/';
|
|
// Parse arguments
|
|
var i = 2;
|
|
while (i < process.argv.length) {
|
|
var arg = process.argv[i];
|
|
|
|
switch (arg) {
|
|
case '--url':
|
|
case '-u':
|
|
var url = process.argv[i + 1];
|
|
manifest.packageUrl = url;
|
|
manifest.remoteManifestUrl = url + 'project.manifest';
|
|
manifest.remoteVersionUrl = url + 'version.manifest';
|
|
i += 2;
|
|
break;
|
|
case '--version':
|
|
case '-v':
|
|
manifest.version = process.argv[i + 1];
|
|
// manifest.packageUrl = url + manifest.version + "/";
|
|
// manifest.remoteManifestUrl =
|
|
// url + manifest.version + "/" + "project.manifest";
|
|
// manifest.remoteVersionUrl =
|
|
// url + manifest.version + "/" + "version.manifest";
|
|
i += 2;
|
|
// console.log(manifest);
|
|
break;
|
|
case '--src':
|
|
case '-s':
|
|
src = process.argv[i + 1];
|
|
i += 2;
|
|
break;
|
|
case '--dest':
|
|
case '-d':
|
|
dest = process.argv[i + 1];
|
|
i += 2;
|
|
break;
|
|
default:
|
|
i++;
|
|
break;
|
|
}
|
|
}
|
|
|
|
function readDir(dir, obj) {
|
|
var stat = fs.statSync(dir);
|
|
if (!stat.isDirectory()) {
|
|
return;
|
|
}
|
|
var subpaths = fs.readdirSync(dir),
|
|
subpath,
|
|
size,
|
|
md5,
|
|
compressed,
|
|
relative;
|
|
for (var i = 0; i < subpaths.length; ++i) {
|
|
if (subpaths[i][0] === '.') {
|
|
continue;
|
|
}
|
|
subpath = path.join(dir, subpaths[i]);
|
|
stat = fs.statSync(subpath);
|
|
if (stat.isDirectory()) {
|
|
readDir(subpath, obj);
|
|
} else if (stat.isFile()) {
|
|
// Size in Bytes
|
|
size = stat['size'];
|
|
md5 = crypto
|
|
.createHash('md5')
|
|
.update(fs.readFileSync(subpath))
|
|
.digest('hex');
|
|
compressed = path.extname(subpath).toLowerCase() === '.zip';
|
|
|
|
relative = path.relative(src, subpath);
|
|
relative = relative.replace(/\\/g, '/');
|
|
relative = encodeURI(relative);
|
|
obj[relative] = {
|
|
size: size,
|
|
md5: md5,
|
|
};
|
|
if (compressed) {
|
|
obj[relative].compressed = true;
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
var mkdirSync = function (path) {
|
|
try {
|
|
fs.mkdirSync(path);
|
|
} catch (e) {
|
|
if (e.code != 'EEXIST') throw e;
|
|
}
|
|
};
|
|
|
|
// Iterate assets and src folder
|
|
readDir(path.join(src, 'src'), manifest.assets);
|
|
readDir(path.join(src, 'res'), manifest.assets);
|
|
// readDir(path.join(src, 'jsb-adapter'), manifest.assets);
|
|
|
|
var destManifest = path.join(dest, 'project.manifest');
|
|
var destVersion = path.join(dest, 'version.manifest');
|
|
|
|
mkdirSync(dest);
|
|
|
|
fs.writeFile(destManifest, JSON.stringify(manifest), (err) => {
|
|
if (err) throw err;
|
|
console.log('Manifest successfully generated');
|
|
});
|
|
|
|
delete manifest.assets;
|
|
delete manifest.searchPaths;
|
|
fs.writeFile(destVersion, JSON.stringify(manifest), (err) => {
|
|
if (err) throw err;
|
|
console.log('Version successfully generated');
|
|
});
|