UNPKG

newkit-cli

Version:

Newkit cli tools.

71 lines (66 loc) 2.52 kB
'use strict'; var fs = require('fs'); var path = require('path'); var tar = require('tar-fs'); var request = require('request'); var util = require('./util'); var config = require('./../config.json'); //上传文件 var uploadModule = (moduleName, modulePath, opt) => { return new Promise((resolve, reject) => { var uploadReq = request.post(`${opt.apiHost}/deploy/upload`, (err, res, body) => { if (err || res.statusCode !== 200) { return reject(err || `Upload error, statusCode: ${res.statusCode}, err: ${body}`); } resolve(JSON.parse(body)); }); var formData = uploadReq.form(); formData.append('file', fs.createReadStream(modulePath), { filename: `${moduleName}.tar`, contentType: '.tar' }); }); }; //发布模块 var deployModule = (moduleName, dfisFileName, opt) => { var now = new Date(); var versionNo = `V_${(now.getFullYear() + '').substring(2)}.${now.getMonth() + 1}.${now.getDate()}.${now.getHours()}.${now.getMinutes()}`; var postData = { versionNo: opt.version || versionNo, moduleName: moduleName, deployUser: 'newkit-cli', memo: `Newkit cli: ${opt.memo || 'Auto deploy'}`, difsFileName: dfisFileName //正确名称是dfisFileName,但是后端使用的是difsFileName }; return new Promise((resolve, reject) => { request({ method: 'POST', url: `${opt.apiHost}/deploy`, headers: { 'Content-Type': 'application/json', Accept: 'application/json' }, body: JSON.stringify(postData) }, (err, res, body) => { if (err || res.statusCode !== 200) { return reject(err || `Upload error, statusCode: ${res.statusCode}, err: ${body}`); } resolve(JSON.parse(body)); }); }); }; module.exports = (module, opt) => { var cwd = process.cwd(); var modulePath = path.join(cwd, 'packed', `${module}.tar`); if (!fs.existsSync(modulePath)) { return util.error(`${modulePath} not found. You should use [nc pack <version>] to create module package before deploy.`); } opt.apiHost = opt.gqc ? config.newkitGqcApiHost : config.newkitGdevApiHost; util.info('Uploading module ...'); uploadModule(module, modulePath, opt) .then((body) => { util.info('Uploading module succeed, deploying ...'); deployModule(module, body.filename, opt) .then(() => { util.info('Deploy succeed.'); }) .catch(util.error); }).catch(util.error); };