1 | (function (global, factory) {
|
2 | typeof exports === 'object' && typeof module !== 'undefined' ? factory() :
|
3 | typeof define === 'function' && define.amd ? define(factory) :
|
4 | (factory());
|
5 | }(this, (function () { 'use strict';
|
6 |
|
7 |
|
8 | var execSh = require('exec-sh');
|
9 | var jetpack = require('fs-jetpack');
|
10 | var program = require('commander');
|
11 | var chalk = require('chalk');
|
12 |
|
13 | var log = console.log;
|
14 | var logHeader = function logHeader(msg) {
|
15 | return log(chalk.yellow('\n' + msg));
|
16 | };
|
17 |
|
18 | program.version('0.0.9').option('-p, --path <path>', 'Change base path (use relative path)', '.').option('-a, --add <module>', 'Add a module to list (in allspark.json)', '.').parse(process.argv);
|
19 |
|
20 | logHeader('✨ Allspark ✨');
|
21 |
|
22 | var CURRENT_FULL_PATH = process.cwd();
|
23 |
|
24 | var BASE_PATH = program.path;
|
25 | BASE_PATH = BASE_PATH.slice(-1) === '/' ? BASE_PATH.slice(0, -1) : BASE_PATH;
|
26 |
|
27 | var ALLSPARK_PATH = BASE_PATH + '/allspark';
|
28 | var ALLSPARK_FULL_PATH = CURRENT_FULL_PATH + BASE_PATH.slice(1) + '/allspark';
|
29 |
|
30 |
|
31 |
|
32 | var configFilePath = ALLSPARK_PATH + '/allspark.json';
|
33 | var CONFIG = jetpack.read(configFilePath, 'json');
|
34 | if (!CONFIG || !CONFIG.modules) {
|
35 |
|
36 | process.exit();
|
37 | }
|
38 |
|
39 | var processCommand = function processCommand(cmd, Module) {
|
40 | var res = cmd;
|
41 | res = res.replace('$DIR', './allspark/' + Module.ID);
|
42 | return res;
|
43 | };
|
44 |
|
45 | var execArray = function execArray(cmds, callback) {
|
46 | var execNext = function execNext() {
|
47 | var cmd = cmds.shift() || '';
|
48 |
|
49 | if (cmd) {
|
50 | if (cmd.indexOf('!! ') === 0) {
|
51 | logHeader('⚡️ ' + cmd.slice(3));
|
52 | cmds.length ? execNext() : callback(null);
|
53 | } else {
|
54 | execSh(cmd, { cwd: BASE_PATH }, function (err) {
|
55 |
|
56 | if (err) {
|
57 | callback(err);
|
58 | } else {
|
59 | cmds.length ? execNext() : callback(null);
|
60 | }
|
61 | });
|
62 | }
|
63 | }
|
64 | };
|
65 | execNext();
|
66 | };
|
67 |
|
68 |
|
69 | var installDeps = function installDeps(Module) {
|
70 | var cmds = [];
|
71 |
|
72 | var checkDeps = function checkDeps(depsArr) {
|
73 | var depsToAdd = [];
|
74 | if (depsArr && depsArr.length > 0) {
|
75 | depsArr.forEach(function (dep) {
|
76 | var depPath = BASE_PATH + '/node_modules/' + dep;
|
77 |
|
78 | if (jetpack.exists(depPath) !== 'dir') {
|
79 | depsToAdd.push(dep);
|
80 | }
|
81 | });
|
82 |
|
83 | }
|
84 | return depsToAdd;
|
85 | };
|
86 | if (typeof Module.install === 'function') {
|
87 | var json = Module.install();
|
88 | var depsToAdd = checkDeps(json.dependencies);
|
89 | if (depsToAdd.length > 0) {
|
90 | cmds.push('yarn add ' + depsToAdd.join(' '));
|
91 | }
|
92 | var devDepsToAdd = checkDeps(json.devDependencies);
|
93 | if (devDepsToAdd.length > 0) {
|
94 | cmds.push('yarn add ' + devDepsToAdd.join(' ') + ' --dev');
|
95 | }
|
96 | }
|
97 | return cmds;
|
98 | };
|
99 |
|
100 | log('- path: ', BASE_PATH);
|
101 | log('- modules: ', CONFIG.modules);
|
102 | var cmds = [];
|
103 |
|
104 | CONFIG.modules.forEach(function (moduleName) {
|
105 | var moduleFullPath = ALLSPARK_FULL_PATH + '/' + moduleName + '/index.js';
|
106 | var module = require(moduleFullPath);
|
107 |
|
108 | var Module = module.Module;
|
109 |
|
110 | cmds.push('!! ' + Module.NAME);
|
111 |
|
112 | cmds = cmds.concat(Module.install().commands || []);
|
113 | var installCmds = installDeps(Module);
|
114 | cmds = cmds.concat(installCmds);
|
115 |
|
116 | var json = Module.start();
|
117 | if (json.commands) {
|
118 | json.commands.forEach(function (cmd) {
|
119 | return cmds.push(processCommand(cmd, Module));
|
120 | });
|
121 |
|
122 | }
|
123 | log('exec commands:\n', cmds);
|
124 | });
|
125 | execArray(cmds, function () {});
|
126 |
|
127 |
|
128 |
|
129 |
|
130 |
|
131 |
|
132 |
|
133 |
|
134 |
|
135 |
|
136 |
|
137 |
|
138 |
|
139 |
|
140 |
|
141 |
|
142 |
|
143 |
|
144 |
|
145 |
|
146 |
|
147 |
|
148 |
|
149 |
|
150 |
|
151 |
|
152 |
|
153 |
|
154 |
|
155 |
|
156 |
|
157 |
|
158 |
|
159 |
|
160 |
|
161 |
|
162 |
|
163 |
|
164 |
|
165 |
|
166 |
|
167 |
|
168 |
|
169 |
|
170 |
|
171 |
|
172 |
|
173 | })));
|