Repository navigation
Expand file tree
/
Copy pathindex.js
More file actions
executable file
·108 lines (97 loc) · 3.44 KB
/
Copy pathindex.js
File metadata and controls
executable file
·108 lines (97 loc) · 3.44 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
const SteamerPlugin = require('steamer-plugin');
const path = require('path');
const ora = require('ora');
const git = require('simple-git');
const spawn = require('cross-spawn');
const {
getPkgJson,
help,
getKitOptions,
writeKitOptions,
walkAndReplace,
readKitConfig
} = require('./libs/kit/utils');
const initProject = require('./libs/kit/init');
const installKit = require('./libs/kit/install');
const updateKit = require('./libs/kit/update');
const uninstallKit = require('./libs/kit/uninstall');
const template = require('./libs/kit/template');
const listKit = require('./libs/kit/list');
const developKit = require('./libs/kit/develop');
/**
* // .steamer/steamer.plugin-kit.js
module.exports = {
'plugin': 'steamer-plugin-kit',
'config': {
'kit': 'steamer-react'
}
}
*/
class KitPlugin extends SteamerPlugin {
constructor(args) {
super(args);
// 成员合并
this.help = help.bind(this);
this.getKitOptions = getKitOptions.bind(this);
this.writeKitOptions = writeKitOptions.bind(this);
this.clone = installKit.clone.bind(this);
this.cloneLatest = installKit.cloneLatest.bind(this);
this.cloneTag = installKit.cloneTag.bind(this);
this.updateGlobalKit = updateKit.updateGlobalKit.bind(this);
this.updateGlobal = updateKit.updateGlobal.bind(this);
this.updateLocal = updateKit.updateLocal.bind(this);
this.getPkgJson = getPkgJson.bind(this);
this.walkAndReplace = walkAndReplace.bind(this);
this.readKitConfig = readKitConfig.bind(this);
this.argv = args;
this.pluginName = 'steamer-plugin-kit';
this.description = 'manage starterkits';
// 读取一些全局默认的配置,如默认npm命令等
this.config = this.readSteamerDefaultConfig();
// 脚手架下载目录
this.kitHomePath = path.join(
this.getGlobalHome(),
'.steamer',
'starterkits'
);
// 脚手架配置路径
this.kitOptionsPath = path.join(this.kitHomePath, 'starterkits.js');
// 脚手架配置
this.kitOptions = this.getKitOptions();
// 忽略目录
this.ignoreFiles = ['.git', '.svn'];
this.spinner = ora('Loading unicorns');
this.spawn = spawn;
this.git = git;
}
init(argv) {
let argvs = argv || this.argv; // command argv
let isAdd = argvs.add;
let isTag = argvs.tag;
let isUpdate = argvs.update || argvs.u;
let isAlias = argvs.alias || null;
let isGlobal = argvs.global || argvs.g;
let isRemove = argvs.remove || argvs.r;
let isTemplate = argvs.template || argvs.t;
let isList = argvs.list || argvs.l;
let isDevelop = argvs.develop || argvs.d;
if (isAdd) {
installKit.installKit.bind(this)(isAdd, isTag, isAlias);
} else if (isUpdate) {
updateKit.update.bind(this)(isGlobal);
} else if (isRemove) {
uninstallKit.bind(this)(isRemove);
} else if (isTemplate) {
template.bind(this)();
} else if (isList) {
listKit.bind(this)();
} else if (isDevelop) {
developKit.bind(this)(isDevelop);
}
// ignore other command options
else if (Object.keys(argvs).length <= 4) {
initProject.bind(this)();
}
}
}
module.exports = KitPlugin;