UNPKG

zby-nova-upload

Version:

zby nova upload

181 lines (154 loc) 5.26 kB
'use strict'; // require var fs = require('fs'); var path = require('path'); var qiao = require('qiao.util.all'); // const var versions = ['1.7.2', '1.7.3']; var cocosJs = 'cocos2d-js-min.js'; var pngName = 'splash.png'; var mainJs = 'main.js'; /** * upload nova zip */ exports.uploadNovaZip = async function(sourceNovaZipPath, cocosFileFolder, ossConfig, dev){ // 1.解压zip // 2.操作文件 // 3.上传oss // check params console.log('check params ...'); if(!sourceNovaZipPath) return qiao.json.danger('缺少参数sourceNovaZipPath'); if(!cocosFileFolder) return qiao.json.danger('缺少参数cocosFileFolder'); if(!ossConfig) return qiao.json.danger('缺少参数ossConfig'); console.log('check params success.'); console.log(); // check zip file console.log('check zip file ...'); var checkZipResult = checkZipFile(sourceNovaZipPath); if(checkZipResult) return qiao.json.danger(checkZipResult); console.log('check zip file success'); console.log(); // check oss config console.log('init oss client ...'); var client = null; try{ client = qiao.oss.client(ossConfig); }catch(e){ if(dev) console.log(e); return qiao.json.danger('oss配置文件错误!'); } console.log('init oss client success'); console.log(); // unzip zip file console.log('unzip course zip file ...'); var tempFolder = path.resolve(sourceNovaZipPath, '../' + qiao.encode.uuid()); var tempCourseFolder = qiao.encode.uuid(); var novaZipFolder = path.resolve(tempFolder, tempCourseFolder); try{ qiao.zip.unzip(sourceNovaZipPath, novaZipFolder); }catch(e){ if(dev) console.log(e); return qiao.json.danger('解压缩nova课件原文件出错!'); } console.log('unzip course zip file success'); console.log(); // handle course console.log('handle course files ...'); var handleCourseResult = handleCourse(sourceNovaZipPath, novaZipFolder, cocosFileFolder, dev); if(handleCourseResult) return qiao.json.danger(handleCourseResult); console.log('handle course files success'); console.log(); // zip folder console.log('zip course files ...'); try{ await qiao.zip.zipFolderSync(novaZipFolder, novaZipFolder + '.zip'); }catch(e){ if(dev) console.log(e); return qiao.json.danger('压缩处理后的文件夹出错!'); } console.log('zip course files success'); console.log(); // upload to oss console.log('upload course files to ali-oss ...'); try{ await qiao.oss.uploadFolderSync(client, ossConfig.ossPath, tempFolder); }catch(e){ if(dev) console.log(e); return qiao.json.danger('上传到oss出错!'); } console.log('upload course files to ali-oss success'); console.log(); // del temp folder console.log('delete course files ...'); qiao.file.rm(tempFolder + '/'); console.log('delete course files success'); console.log(); // return var version = getVersion(sourceNovaZipPath); return qiao.json.success(ossConfig.ossHost + ossConfig.ossPath + '/' + tempCourseFolder + '/index.html?cocos=' + version); }; // check zip file function checkZipFile(zipFile){ // check zip var zipExt = qiao.file.extname(zipFile); if(zipExt != '.zip') return 'nova课件原文件必须为zip格式!'; // check - if(zipFile.indexOf('-') == -1) return 'nova课件原文件必须以-版本号结尾!'; // check version var version = getVersion(zipFile); if(versions.indexOf(version) == -1) return 'nova课件原文件版本号必须为以下之一:' + versions; // suc return null; } // handle course function handleCourse(sourceNovaZipPath, novaZipFolder, cocosFileFolder, dev){ var delCososResult = delCocos(novaZipFolder, dev); if(!delCososResult) return '删除' + cocosJs + '出错!'; var copyPngResult = copyPng(novaZipFolder, cocosFileFolder, dev); if(!copyPngResult) return '复制' + pngName + '出错!' var copyJsResult = copyJs(sourceNovaZipPath, novaZipFolder, cocosFileFolder, dev); if(!copyJsResult) return '复制' + mainJs + '出错!'; return null; } // del cocos function delCocos(novaZipFolder, dev){ var cocosJsPath = path.resolve(novaZipFolder, cocosJs); try{ fs.statSync(cocosJsPath); fs.unlinkSync(cocosJsPath); return true; }catch(e){ if(dev) console.log(e); return false; } } // copy png function copyPng(novaZipFolder, cocosFileFolder, dev){ var pngSourcePath = path.resolve(cocosFileFolder, pngName); var pngDestPath = path.resolve(novaZipFolder, pngName); try{ fs.copyFileSync(pngSourcePath, pngDestPath); return true; }catch(e){ if(dev) console.log(e); return false; } } // copy js function copyJs(sourceNovaZipPath, novaZipFolder, cocosFileFolder, dev){ var version = getVersion(sourceNovaZipPath); var jsSourcePath = path.resolve(cocosFileFolder, 'main-' + version + '.js'); var jsDestPath = path.resolve(novaZipFolder, mainJs); try{ fs.copyFileSync(jsSourcePath, jsDestPath); return true; }catch(e){ if(dev) console.log(e); return false; } } // get version function getVersion(zipPath){ var ss = zipPath.split('-'); return ss[ss.length - 1].toLowerCase().split('.zip').join(''); }