1 | "use strict";
|
2 | Object.defineProperty(exports, "__esModule", { value: true });
|
3 | var os = require("os");
|
4 | var path_1 = require("path");
|
5 | var del = require("del");
|
6 | var chek_1 = require("chek");
|
7 | var logger_1 = require("./logger");
|
8 | var glob = require("glob");
|
9 | var colurs_1 = require("colurs");
|
10 | var fs_extra_1 = require("fs-extra");
|
11 | var semver_1 = require("semver");
|
12 | var util_1 = require("util");
|
13 | var _pkg;
|
14 | exports.cwd = process.cwd();
|
15 | var colurs = new colurs_1.Colurs();
|
16 |
|
17 |
|
18 |
|
19 |
|
20 |
|
21 | function getParsed(filename) {
|
22 | filename = path_1.resolve(exports.cwd, filename);
|
23 | return path_1.parse(filename);
|
24 | }
|
25 |
|
26 |
|
27 |
|
28 |
|
29 |
|
30 | function getRelative(filename) {
|
31 | var parsed = chek_1.isString(filename) ? getParsed(filename) : filename;
|
32 | return path_1.relative(exports.cwd, path_1.join(parsed.dir, parsed.base || ''));
|
33 | }
|
34 |
|
35 |
|
36 |
|
37 |
|
38 |
|
39 |
|
40 | function clean(globs) {
|
41 | globs = chek_1.toArray(globs);
|
42 | globs.forEach(function (g) {
|
43 | try {
|
44 | del.sync(g);
|
45 |
|
46 |
|
47 |
|
48 | }
|
49 | catch (ex) {
|
50 | logger_1.log.info("failed to clean " + getRelative(g) + ".");
|
51 | }
|
52 | });
|
53 | }
|
54 | exports.clean = clean;
|
55 |
|
56 |
|
57 |
|
58 |
|
59 |
|
60 |
|
61 |
|
62 | function copy(src, dest) {
|
63 | if (!src || !dest)
|
64 | return false;
|
65 | var parsedSrc, parsedDest;
|
66 | parsedSrc = getParsed(src);
|
67 | parsedDest = getParsed(dest);
|
68 | try {
|
69 | fs_extra_1.copySync(src, dest);
|
70 | return true;
|
71 | }
|
72 | catch (ex) {
|
73 | logger_1.log.warn("failed to copy " + colurs.yellow(getRelative(parsedSrc || 'undefined')) + " to " + colurs.red(getRelative(parsedDest || 'undefined')) + ".");
|
74 | return false;
|
75 | }
|
76 | }
|
77 | exports.copy = copy;
|
78 |
|
79 |
|
80 |
|
81 |
|
82 |
|
83 |
|
84 | function copyAll(copies) {
|
85 | var success = 0;
|
86 | var failed = 0;
|
87 | var result;
|
88 | function update(_result) {
|
89 | if (!_result)
|
90 | failed++;
|
91 | else
|
92 | success++;
|
93 | }
|
94 | function logResults() {
|
95 |
|
96 | if (success || failed) {
|
97 | if (failed > success) {
|
98 | if (!success)
|
99 | logger_1.log.error(colurs.red(failed) + " copies " + colurs.red('failed') + " to processes with 0 succeeding.");
|
100 | else
|
101 | logger_1.log.warn(colurs.red(failed) + " copies " + colurs.red('failed') + " to processes with " + (colurs.green(success) + 'succeeding') + ".");
|
102 | }
|
103 | else {
|
104 | logger_1.log.info(colurs.green(success) + " items " + colurs.green('successfully') + " copied with " + colurs.yellow(failed) + " copies " + colurs.yellow('failing') + ".");
|
105 | }
|
106 | }
|
107 | }
|
108 | if (chek_1.isPlainObject(copies)) {
|
109 | chek_1.keys(copies).forEach(function (k) {
|
110 | var itm = copies[k];
|
111 |
|
112 | if (itm.src.indexOf('*') !== -1) {
|
113 | var arr = glob.sync(itm.src);
|
114 | arr.forEach(function (str) {
|
115 | result = copy(str, itm.dest);
|
116 | update(result);
|
117 | });
|
118 | }
|
119 | else {
|
120 | result = copy(itm.src, itm.dest);
|
121 | update(result);
|
122 | }
|
123 | });
|
124 |
|
125 | }
|
126 | else if (chek_1.isArray(copies)) {
|
127 |
|
128 | if (chek_1.isString(copies[0]))
|
129 | copies = [copies[0].split('|')];
|
130 | copies.forEach(function (c) {
|
131 | var tuple = c;
|
132 | if (tuple[0].indexOf('*') !== -1) {
|
133 | var arr = glob.sync(tuple[0]);
|
134 | arr.forEach(function (str) {
|
135 | result = copy(str, tuple[1]);
|
136 | update(result);
|
137 | });
|
138 | }
|
139 | else {
|
140 | result = copy(tuple[0], tuple[1]);
|
141 | update(result);
|
142 | }
|
143 | });
|
144 |
|
145 | }
|
146 | else {
|
147 | logger_1.log.warn("cannot copy using unknown configuration type of " + typeof copies + ".");
|
148 | }
|
149 | return {
|
150 | success: success,
|
151 | failed: failed
|
152 | };
|
153 | }
|
154 | exports.copyAll = copyAll;
|
155 |
|
156 |
|
157 |
|
158 |
|
159 |
|
160 |
|
161 | function pkg(val) {
|
162 | var filename = path_1.resolve(exports.cwd, 'package.json');
|
163 | if (!val)
|
164 | return _pkg || (_pkg = fs_extra_1.readJSONSync(filename));
|
165 | fs_extra_1.writeJSONSync(filename, val, { spaces: 2 });
|
166 | }
|
167 | exports.pkg = pkg;
|
168 |
|
169 |
|
170 |
|
171 |
|
172 |
|
173 |
|
174 | function bump(type) {
|
175 | if (type === void 0) { type = 'patch'; }
|
176 | var _pkg = pkg();
|
177 | if (!_pkg || !_pkg.version)
|
178 | logger_1.log.error('Failed to load package.json, are you sure this is a valid project?');
|
179 | var origVer = _pkg.version;
|
180 | var newVer = semver_1.inc(origVer, type);
|
181 | if (newVer === null)
|
182 | logger_1.log.error('Whoops tried to bump version but got null.');
|
183 | _pkg.version = newVer;
|
184 | pkg(_pkg);
|
185 | return { name: _pkg.name, version: _pkg.version, previous: origVer, current: _pkg.version };
|
186 | }
|
187 | exports.bump = bump;
|
188 |
|
189 |
|
190 |
|
191 |
|
192 |
|
193 |
|
194 |
|
195 |
|
196 | function serve(name, options, init) {
|
197 | var _pkg = pkg();
|
198 | if (chek_1.isPlainObject(name)) {
|
199 | init = options;
|
200 | options = name;
|
201 | name = undefined;
|
202 | }
|
203 | if (util_1.isBoolean(options)) {
|
204 | init = options;
|
205 | options = undefined;
|
206 | }
|
207 | var defaults = {
|
208 | server: {
|
209 | baseDir: './dist'
|
210 | }
|
211 | };
|
212 | name = name || 'dev-server';
|
213 | options = chek_1.extend({}, defaults, options);
|
214 | var bsync = chek_1.tryRootRequire('browser-sync');
|
215 | if (!bsync)
|
216 | logger_1.log.error('failed to load root module browser-sync, ensure the module is installed');
|
217 | var server = bsync.create(name);
|
218 | if (init !== false)
|
219 | server.init(options, function (err) {
|
220 | if (err) {
|
221 | logger_1.log.error(err);
|
222 | }
|
223 | else {
|
224 | logger_1.log.info("browser Sync server " + name + " successfully initialized.");
|
225 | }
|
226 | });
|
227 | return server;
|
228 | }
|
229 | exports.serve = serve;
|
230 |
|
231 |
|
232 |
|
233 |
|
234 | function platform() {
|
235 | var cpus = os.cpus();
|
236 | var cpu = cpus[0];
|
237 | cpu.cores = cpus.length;
|
238 | var tmpPlatform = os.platform();
|
239 | if (/^win/.test(tmpPlatform))
|
240 | tmpPlatform = 'windows';
|
241 | else if (tmpPlatform === 'darwin' || tmpPlatform === 'freebsd')
|
242 | tmpPlatform = 'mac';
|
243 | else if (tmpPlatform === 'linux')
|
244 | tmpPlatform = 'linux';
|
245 | return {
|
246 | platform: tmpPlatform,
|
247 | arch: os.arch(),
|
248 | release: os.release(),
|
249 | hostname: os.hostname(),
|
250 | homedir: os.homedir(),
|
251 | cpu: cpu
|
252 | };
|
253 | }
|
254 | exports.platform = platform;
|
255 |
|
\ | No newline at end of file |