@conecli/cone-cli
Version:
松果编辑器命令行工具
46 lines (40 loc) • 1.74 kB
JavaScript
;
const {homedir} = require('os')
const config = require('../configs/conecli.json')
const {TEMPLATE_DIR} = require('../utils/const')
const fs = require('fs-extra');
const path = require('path')
const mkdirp = require('mkdirp')
const {getWorkspacePath, downloadRepoByConfig, copySync} = require('../utils/util')
const logger = require('../utils/logger')
const chalk = require('chalk')
/**
* 添加扩展点
* @param extentionName
* @param extentionKey 此角色扩展点在配置中的key
*/
module.exports = async function addExtentionAction(extentionName, extentionKey = 'extentions') {
const extInfo = config[extentionKey] && config[extentionKey][extentionName]
if (!extInfo) {
logger.fatal(`no extension named ${extentionName} registered, or please use command "cone update" to upgrade`)
}
console.log('add extention: ', chalk.blue(extentionName) + ' - ' + extInfo.description);
let workspace = getWorkspacePath()
if (workspace) {
// 开发者用户目录
const userPath = path.join(workspace, 'user')
if (!fs.existsSync(userPath)) {
mkdirp.sync(userPath)
}
// 扩展点模板临时存放目录
const extentionTmp = path.join(homedir(), TEMPLATE_DIR, extentionKey, extentionName)
await downloadRepoByConfig(extentionName, extInfo, extentionTmp).catch(err=>{
logger.fatal(err.message)
})
const toExtentionPath = path.join(userPath, extentionName)
copySync(extentionTmp, toExtentionPath)
logger.success(chalk.green(`extention ${chalk.blue(extentionName)} add completed`))
} else {
logger.fatal(`please enter work directory to execute the commands`)
}
}