123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144 |
- const os = require('os');
- const fs = require('fire-fs');
- const path = require('fire-path');
- module.exports = {
- isVersion (str) {
- return (/^\d+\.\d+\.\d+$/).test(str);
- },
- readFileSync (filePath, mode) {
- let data;
- try {
- data = fs.readFileSync(filePath, mode);
- } catch (error) {
- Editor.error('readFileSync error:', error);
- }
- return data;
- },
- writeFileSync (filePath, data, mode) {
- fs.writeFile(filePath, data, mode, (error)=>{
- if (error) {
- Editor.error('readFileSync error:', error);
- return false;
- }
- Editor.log(filePath + '写入成功');
- });
- },
- isURL (str) {
- let strRegex = '(https?|ftp|file)://[-A-Za-z0-9+&@#/%?=~_|!:,.;]+[-A-Za-z0-9+&@#/%=~_|]';
- let re = new RegExp(strRegex);
- return str.match(re);
- },
- getRelative (from, to) {
- return path.relative(from, to);
- },
- accessPath (filePath, callback) {
- fs.access(filePath, callback);
- },
- createProjectManifestAssets (assetdb, host, callback) {
- let manifestFmt =
- '{\n' +
- ' packageUrl: %s,\n' +
- ' remoteManifestUrl: \'%s/project.manifest\',\n' +
- ' remoteVersionUrl: \'%s/version.manifest\',\n' +
- ' version: \'100001\',\n' +
- ' assets: {},\n' +
- ' searchPaths: []\n' +
- '}\n';
- host = host.replace(/\\/g, '/');
- host = encodeURI(host);
- let manifest = manifestFmt.replace(new RegExp('%s', 'g'), host);
- Editor.Scene.callSceneScript('build-helper', 'createAssets', assetdb, manifest, callback);
- },
- createVersionManifestAssets (assetdb, host, callback) {
- let manifestFmt =
- '{\n' +
- ' packageUrl: %s,\n' +
- ' remoteManifestUrl: \'%s/project.manifest\',\n' +
- ' remoteVersionUrl: \'%s/version.manifest\',\n' +
- ' version: \'100001\',\n' +
- '}\n';
- host = host.replace(/\\/g, '/');
- host = encodeURI(host);
- let manifest = manifestFmt.replace(new RegExp('%s', 'g'), host);
- Editor.Scene.callSceneScript('build-helper', 'createAssets', assetdb, manifest, callback);
- },
- copyFolder (src, dst) {
- if (!fs.existsSync(dst)) {
- fs.mkdirSync(dst);
- }
- let paths = fs.readdirSync(src); // 同步读取当前目录
- paths.forEach((aPath) => {
- let _src = path.join(src, aPath);
- let _dst = path.join(dst, aPath);
- let stats = fs.statSync(_src);
- if (stats.isFile()){
- // 如果是个文件则拷贝
- fs.copyFileSync(_src, _dst);
- } else {
- if (!fs.existsSync(_dst)) {
- fs.mkdirSync(_dst);
- }
- // 是目录则 递归
- this.copyFolder(_src, _dst);
- }
- });
- },
- /**
- * 获取本机IP
- */
- getIPAdress () {
- var interfaces = os.networkInterfaces();
- for (var devName in interfaces) {
- var iface = interfaces[devName];
- for (var i = 0; i < iface.length; i++) {
- var alias = iface[i];
- if (alias.family === 'IPv4' && alias.address !== '127.0.0.1' && !alias.internal) {
- return alias.address;
- }
- }
- }
- },
- findFileSync (aPath, cb) {
- let dirs = fs.readdirSync(aPath);
- dirs.forEach((ele, index) => {
- let fullpath = path.join(aPath, ele);
- let info = fs.statSync(fullpath);
- if (info.isDirectory()) {
- this.findFileSync(fullpath, cb);
- } else {
- cb(fullpath);
- }
- });
- },
- rmdirSync (aPath) {
- let files = [];
- if (fs.existsSync(aPath)) {
- files = fs.readdirSync(aPath);
- files.forEach((file, index) => {
- let curPath = aPath + '/' + file;
- if (fs.statSync(curPath).isDirectory()) {
- this.rmdirSync(curPath);
- } else {
- fs.unlinkSync(curPath);
- }
- });
- fs.rmdirSync(aPath);
- }
- }
- };
|