123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116 |
- var fs = require('fs');
- var path = require('path');
- var crypto = require('crypto');
- var serverRoot = 'https://pub.dwstatic.com/wxgame/allstar/';
- var manifest = {
- packageUrl: serverRoot,
- remoteManifestUrl: serverRoot + 'remote-assets/project.manifest',
- remoteVersionUrl: serverRoot + 'remote-assets/version.manifest',
- version: '1.0.0',
- assets: {},
- searchPaths: []
- };
- var dest = './remote-assets/';
- var src = './jsb/';
- 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];
- i += 2;
- 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 = stat['size'];
- md5 = crypto.createHash('md5').update(fs.readFileSync(subpath, 'binary')).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;
- }
- }
- readDir(path.join(src, 'src'), manifest.assets);
- readDir(path.join(src, 'res'), 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');
- });
|