newkit-cli
Version:
Newkit cli tools.
65 lines (63 loc) • 2.53 kB
JavaScript
;
let fs = require('fs');
let path = require('path');
let child_process = require('child_process');
let del = require('del');
let util = require('./util');
let config = require('./../config.json');
module.exports = (version, force) => {
let apiAddress = `${config.apiHost}/newkit-autoupdate/v1/` + (version ? `versions/${version}` : 'current-version');
let cwd = process.cwd();
let localVersion = util.getLocalVersion(cwd);
let root = (folderPath) => path.join(cwd, folderPath);
if (localVersion) {
util.info(`Local version: ${localVersion}`);
} else {
util.error('Can\'t get local version. Please use nc init to init project.');
if (!force) {
return;
}
}
util.getJson(apiAddress)
.then((data) => {
if (!data) {
return util.error('Invalid version, please check input and try again.');
}
if (data.versionNo === localVersion && !force) {
return util.info('Local version are equal to remote version, Stoped.');
}
util.info(`Starting update..., will update to ${data.versionNo}`);
util.downloadFile(data.filename)
.then((downloadFolder) => {
util.info('Downloading zip package succeed. Unzip...');
util.unzip(downloadFolder)
.then((folderPath) => {
util.info('Unzip succeed, Clean folder...');
del.sync([
root('./assets/**'),
root('./src/themes/**'),
root('./src/*.*'),
root('./src/modules/app-test/**'),
root('./src/modules/nk-common/**'),
root('./src/modules/nk-core/**'),
root('./src/modules/nk-shell/**'),
root('./assets.json')
]);
util.info('Clean succeed, Coping...');
util.copyTo(folderPath, cwd)
.then(() => {
util.info(`Init successfully. Current vesion is ${data.versionNo}`);
util.info(`Try to install dependencies...`);
child_process.exec('npm install', (err, stdout, stderr) => {
if (err) {
console.log(err);
} else {
console.log(stdout);
console.log(stderr);
}
});
}).catch(util.error);
}).catch(util.error);
}).catch(util.error);
}).catch(util.error);
};