|
1 | 1 | 'use strict';
|
2 | 2 |
|
3 |
| -let Manager = require('../modules/manager.js'); |
| 3 | +const Manager = require('../modules/manager.js') |
| 4 | +const child_process = require('child_process') |
| 5 | +const requireg = require('requireg') |
| 6 | +const request = require('request') |
| 7 | +const semver = require('semver') |
4 | 8 |
|
5 |
| -exports.usage = "重载插件"; |
| 9 | +exports.usage = "重载插件" |
| 10 | + |
| 11 | +exports.setOptions = (optimist) => { |
| 12 | + optimist.alias('h', 'host') |
| 13 | + optimist.describe('h', '拉取插件服务地址') |
| 14 | +}; |
6 | 15 |
|
7 | 16 | exports.run = (options) => {
|
| 17 | + const host = 'http://' + (options.h || options.host || '192.168.237.71:9999/download') |
8 | 18 |
|
| 19 | + // 重载全局插件 |
9 | 20 | Manager.reloadRC();
|
10 | 21 |
|
11 |
| - success('Complete!'); |
| 22 | + // 检查devDependencies中的ykit-config-{name} |
| 23 | + const packageJsonContent = JSON.parse(fs.readFileSync('./package.json', {encoding: 'utf-8'})) |
| 24 | + const ykitModuleReg = /^(@[^\/]+\/)(ykit\-(\w+)\-[\w\-]+)$/ |
| 25 | + |
| 26 | + let willInstallPackages = [] |
| 27 | + |
| 28 | + if(packageJsonContent.devDependencies) { |
| 29 | + const devDependencies = packageJsonContent.devDependencies |
| 30 | + Object.keys(devDependencies).map((depName, i) => { |
| 31 | + if(ykitModuleReg.test(depName) && !requireg.resolve(depName)) { |
| 32 | + const version = devDependencies[depName] |
| 33 | + const packagePath = './node_modules/@qnpm' |
| 34 | + |
| 35 | + if(semver.valid(version)) { |
| 36 | + // 确保存在@qnpm目录 |
| 37 | + mkdirp.sync(packagePath) |
| 38 | + |
| 39 | + const tarName = depName + '@' + version + '.tar.gz' |
| 40 | + const extractPath = sysPath.join(process.cwd(), './node_modules/', tarName) |
| 41 | + const downloadPath = host + '/' + tarName |
| 42 | + const downloadStream = request(downloadPath).pipe(fs.createWriteStream(extractPath)) |
| 43 | + |
| 44 | + log('downloading ' + extractPath) |
| 45 | + downloadStream.on('finish', (e) => { |
| 46 | + if(e) { |
| 47 | + return error(e) |
| 48 | + } |
| 49 | + |
| 50 | + log('extracting ' + extractPath) |
| 51 | + child_process.exec('cd ./node_modules/@qnpm/ && tar -xf ' + extractPath, (e, stdout, errout) => { |
| 52 | + if(e) { |
| 53 | + return error(e) |
| 54 | + } |
| 55 | + |
| 56 | + success('complete!') |
| 57 | + fs.unlinkSync(extractPath) |
| 58 | + }) |
| 59 | + }) |
| 60 | + } else { |
| 61 | + error(depName + '版本号必须确定,如0.1.0') |
| 62 | + } |
| 63 | + } |
| 64 | + }) |
| 65 | + } |
12 | 66 | };
|
0 commit comments