@makano/rew 1.2.41 → 1.2.43
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/lib/rew/cli/cli.js +18 -0
- package/lib/rew/cli/log.js +5 -1
- package/lib/rew/cli/utils.js +64 -29
- package/lib/rew/functions/exec.js +2 -2
- package/lib/rew/functions/id.js +2 -2
- package/package.json +2 -1
package/lib/rew/cli/cli.js
CHANGED
|
@@ -223,6 +223,10 @@ yargs(hideBin(process.argv))
|
|
|
223
223
|
alias: 'r',
|
|
224
224
|
describe: 'Install requirements of the app',
|
|
225
225
|
type: 'boolean',
|
|
226
|
+
}).option('verbose', {
|
|
227
|
+
alias: 'v',
|
|
228
|
+
describe: 'Verbose',
|
|
229
|
+
type: 'boolean',
|
|
226
230
|
}).option('update', {
|
|
227
231
|
alias: 'u',
|
|
228
232
|
describe: 'Update the app',
|
|
@@ -280,6 +284,20 @@ yargs(hideBin(process.argv))
|
|
|
280
284
|
}
|
|
281
285
|
},
|
|
282
286
|
)
|
|
287
|
+
|
|
288
|
+
.command(
|
|
289
|
+
'cache <command>',
|
|
290
|
+
'Manage cache',
|
|
291
|
+
(yargs) => {
|
|
292
|
+
yargs.positional('command', {
|
|
293
|
+
describe: 'Command to clear/list',
|
|
294
|
+
type: 'string',
|
|
295
|
+
});
|
|
296
|
+
},
|
|
297
|
+
async (argv) => {
|
|
298
|
+
utils.cache(argv.command)
|
|
299
|
+
},
|
|
300
|
+
)
|
|
283
301
|
.command(
|
|
284
302
|
'repo <command> [name] [url]',
|
|
285
303
|
'Manage install repositories',
|
package/lib/rew/cli/log.js
CHANGED
|
@@ -4,6 +4,8 @@ const middlePrefix = '├';
|
|
|
4
4
|
const separator = '│';
|
|
5
5
|
const endPrefix = '╰';
|
|
6
6
|
|
|
7
|
+
let last = '';
|
|
8
|
+
|
|
7
9
|
const log = (module.exports.log = function (...toPrint) {
|
|
8
10
|
let prefix = start ? startPrefix : middlePrefix;
|
|
9
11
|
let returns = false;
|
|
@@ -16,8 +18,10 @@ const log = (module.exports.log = function (...toPrint) {
|
|
|
16
18
|
toPrint.pop();
|
|
17
19
|
}
|
|
18
20
|
if (prefix == endPrefix && start) prefix = separator;
|
|
19
|
-
if
|
|
21
|
+
// if(last == endPrefix && prefix == separator) prefix = startPrefix;
|
|
22
|
+
if (!start) console.log(last == endPrefix ? startPrefix : separator);
|
|
20
23
|
if (start) start = false;
|
|
24
|
+
last = prefix;
|
|
21
25
|
if (returns) return [prefix, ...toPrint].join(' ');
|
|
22
26
|
else console.log(prefix, ...toPrint);
|
|
23
27
|
});
|
package/lib/rew/cli/utils.js
CHANGED
|
@@ -14,9 +14,14 @@ const { req } = require('../misc/req');
|
|
|
14
14
|
const { CONFIG_PATH } = require('../const/config_path');
|
|
15
15
|
const { watch } = require('chokidar');
|
|
16
16
|
const { execRewFile } = require('./run');
|
|
17
|
+
const { seededID } = require('../misc/seededid');
|
|
18
|
+
const loading = require('loading-cli');
|
|
19
|
+
const sleep = require('../functions/sleep');
|
|
20
|
+
const { gen_key } = require('../misc/bin');
|
|
17
21
|
|
|
18
22
|
const binpath = path.join(conf({}).create('').root, '.bin');
|
|
19
23
|
const logspath = path.join(conf({}).create('').root, '.logs');
|
|
24
|
+
const cachepath = path.join(conf({}).create('').root, '.cache');
|
|
20
25
|
const localBinPath = path.join(binpath, '../../../', 'bin');
|
|
21
26
|
|
|
22
27
|
module.exports = {
|
|
@@ -195,28 +200,30 @@ module.exports = {
|
|
|
195
200
|
});
|
|
196
201
|
log(' Installing '.blue + pname.green.bold);
|
|
197
202
|
log(' Package'.blue + ': ' + p.name.green + '@' + p.version.yellow);
|
|
198
|
-
if (p.
|
|
199
|
-
log(' Description'.blue + '
|
|
203
|
+
if (p.description) {
|
|
204
|
+
log(' Description'.blue + '\n' + p.description.split('\n').map((i, ind, a) => ' '+(ind == 0 && a.length > 1 ? log.startPrefix : (a.length-1 == ind ? log.endPrefix : log.middlePrefix))+' '+i).join('\n'), ':end');
|
|
205
|
+
}
|
|
206
|
+
if (p.keywords && p.keywords.length) {
|
|
207
|
+
log(' Tags'.blue + '\n ' + log.endPrefix + p.keywords.map(i => '#'+i).join(' '), ':end')
|
|
200
208
|
}
|
|
201
209
|
const done = (f) => {
|
|
202
210
|
if (f.toLowerCase() == 'y' || f.toLowerCase() == 'yes') {
|
|
203
211
|
if (fs.existsSync(installPath)) {
|
|
204
212
|
execSync(`rm -r ${installPath}`);
|
|
205
213
|
}
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
execSync(`rm -r ${apppath}`);
|
|
210
|
-
}
|
|
211
|
-
log(' Installed '.green + pname.cyan.bold, c.install ? '' : ':end');
|
|
212
|
-
if (c.install) {
|
|
213
|
-
if (c.install.build) {
|
|
214
|
-
log(' Building'.blue);
|
|
214
|
+
if (c.install?.build) {
|
|
215
|
+
log(' Building'.blue);
|
|
216
|
+
try{
|
|
215
217
|
this.build({
|
|
216
218
|
...c.install.build,
|
|
217
|
-
file: path.join(
|
|
219
|
+
file: path.join(apppath, c.exec[c.install.build.file] || c.install.build.file)
|
|
218
220
|
});
|
|
219
|
-
}
|
|
221
|
+
} catch(e){}
|
|
222
|
+
}
|
|
223
|
+
execSync(`cp -r ${apppath} ${installPath}`);
|
|
224
|
+
execSync(`chmod 444 ${installPath}/app.yaml`);
|
|
225
|
+
log(' Installed '.green + pname.cyan.bold, ':end');
|
|
226
|
+
if (c.install) {
|
|
220
227
|
if (c.install.commands) {
|
|
221
228
|
for (let command of c.install.commands) {
|
|
222
229
|
try{
|
|
@@ -232,7 +239,7 @@ module.exports = {
|
|
|
232
239
|
this.runFileWithArgv(path.join(installPath, c.exec[c.install.file] || c.install.file), {}, []);
|
|
233
240
|
}
|
|
234
241
|
if (c.install.requirements) {
|
|
235
|
-
this.installReq(c);
|
|
242
|
+
this.installReq(c, opts);
|
|
236
243
|
}
|
|
237
244
|
if (c.install.exec) {
|
|
238
245
|
// this.installReq(c);
|
|
@@ -251,9 +258,6 @@ module.exports = {
|
|
|
251
258
|
}
|
|
252
259
|
rl.close();
|
|
253
260
|
} else {
|
|
254
|
-
if (rmidiri) {
|
|
255
|
-
execSync(`rm -rf ${apppath}`);
|
|
256
|
-
}
|
|
257
261
|
log(' Canceled install'.red.bold, ':end');
|
|
258
262
|
rl.close();
|
|
259
263
|
}
|
|
@@ -355,21 +359,51 @@ module.exports = {
|
|
|
355
359
|
processFile(filePath, importsArray);
|
|
356
360
|
log(' Compiled'.yellow, (importsArray.length + 1 + '').blue, `file${importsArray.length ? 's' : ''}.`.yellow, ':end');
|
|
357
361
|
},
|
|
358
|
-
|
|
362
|
+
cache(command){
|
|
363
|
+
if(command == 'list'){
|
|
364
|
+
console.log(fs.readdirSync(cachepath).join('\n').trim());
|
|
365
|
+
} else {
|
|
366
|
+
fs.readdirSync(cachepath).forEach(file => fs.rmSync(path.join(cachepath, file), { recursive: true }));
|
|
367
|
+
}
|
|
368
|
+
},
|
|
369
|
+
async cloneGit(gitpath, opts) {
|
|
359
370
|
const p = gitpath.split('github:')[1];
|
|
371
|
+
const clonePath = path.join(cachepath, 'rew-git-clone-'+gen_key(gitpath).substring(0, 12));
|
|
360
372
|
const url = `https://github.com/${p}`;
|
|
361
|
-
const apiurl = `https://api.github.com/repos/${p}`;
|
|
373
|
+
const apiurl = `https://api.github.com/repos/${p}/commits`;
|
|
374
|
+
const load = loading("Finding Repo...".yellow).start();
|
|
362
375
|
try {
|
|
363
376
|
const response = await req(apiurl);
|
|
364
|
-
if (response.status !== 200)
|
|
365
|
-
|
|
366
|
-
|
|
367
|
-
|
|
368
|
-
|
|
369
|
-
|
|
370
|
-
|
|
377
|
+
if (response.status !== 200) {
|
|
378
|
+
load.stop();
|
|
379
|
+
return log(' Package not found in github'.red.bold, ':end');
|
|
380
|
+
}
|
|
381
|
+
let pull = false;
|
|
382
|
+
if(fs.existsSync(clonePath)){
|
|
383
|
+
if(fs.existsSync(path.join(clonePath, response.data[0].sha))){
|
|
384
|
+
load.stop();
|
|
385
|
+
log('Found Cache'.yellow);
|
|
386
|
+
return clonePath+'/clone';
|
|
387
|
+
} else {
|
|
388
|
+
pull = true;
|
|
389
|
+
}
|
|
390
|
+
}
|
|
391
|
+
fs.mkdirSync(clonePath, { recursive: true });
|
|
392
|
+
fs.writeFileSync(path.join(clonePath, response.data[0].sha), '');
|
|
393
|
+
load.text = 'Cloning from github'.blue.bold;
|
|
394
|
+
await sleep(100)
|
|
395
|
+
if(pull) execSync(`cd ${clonePath}/clone && git pull`, { stdio: opts.verbose ? 'inherit' : 'ignore' });
|
|
396
|
+
else execSync(`git clone ${url} ${clonePath}/clone`, { stdio: opts.verbose ? 'pipe' : 'ignore' });
|
|
397
|
+
load.text = 'Installing npm packages'.green.bold;
|
|
398
|
+
await sleep(100)
|
|
399
|
+
execSync(`cd ${clonePath}/clone && npm i`, { stdio: opts.verbose ? 'inherit' : 'ignore' });
|
|
400
|
+
load.stop();
|
|
401
|
+
return clonePath+'/clone';
|
|
371
402
|
} catch (e) {
|
|
372
|
-
|
|
403
|
+
const logFile = path.join(logspath, 'logs-'+Date.now()+'.log');
|
|
404
|
+
fs.writeFileSync(logFile, e.toString() +'\n'+ e.stack);
|
|
405
|
+
load.stop();
|
|
406
|
+
log(' Something went wrong, check logs at'.red.bold, logFile.green, ':end');
|
|
373
407
|
}
|
|
374
408
|
},
|
|
375
409
|
findRepo(repo) {
|
|
@@ -377,7 +411,7 @@ module.exports = {
|
|
|
377
411
|
return repos.get(repo);
|
|
378
412
|
},
|
|
379
413
|
async installAppFrom(path, opts) {
|
|
380
|
-
if (path.startsWith('github:')) this.installApp(await this.cloneGit(path
|
|
414
|
+
if (path.startsWith('github:')) this.installApp(await this.cloneGit(path, opts), opts, true);
|
|
381
415
|
else if (path.startsWith('@')) this.fromRepo(path, opts);
|
|
382
416
|
else this.installApp(path, opts, null, null);
|
|
383
417
|
},
|
|
@@ -465,7 +499,7 @@ module.exports = {
|
|
|
465
499
|
console.log(Object.keys(confInstance.getAll()).join('\n'));
|
|
466
500
|
}
|
|
467
501
|
} else if (command === 'delete') {
|
|
468
|
-
confInstance.remove(
|
|
502
|
+
confInstance.remove(key);
|
|
469
503
|
} else {
|
|
470
504
|
log(' Invalid command'.red.bold, ':end');
|
|
471
505
|
}
|
|
@@ -474,6 +508,7 @@ module.exports = {
|
|
|
474
508
|
log('First time init')
|
|
475
509
|
conf({}).create('').optionCenter('repos').set('rewpkgs', '//raw.githubusercontent.com/kevinJ045/rewpkgs/main/main.yaml');
|
|
476
510
|
fs.mkdirSync(binpath, { recursive: true });
|
|
511
|
+
fs.mkdirSync(cachepath, { recursive: true });
|
|
477
512
|
fs.mkdirSync(logspath, { recursive: true });
|
|
478
513
|
}
|
|
479
514
|
};
|
package/lib/rew/functions/id.js
CHANGED
|
@@ -1,5 +1,5 @@
|
|
|
1
|
-
module.exports.generateRandomID = function generateRandomID(length = 12,
|
|
2
|
-
const characters =
|
|
1
|
+
module.exports.generateRandomID = function generateRandomID(length = 12, _characters) {
|
|
2
|
+
const characters = _characters || 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789';
|
|
3
3
|
const charactersLength = characters.length;
|
|
4
4
|
let randomID = '';
|
|
5
5
|
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@makano/rew",
|
|
3
|
-
"version": "1.2.
|
|
3
|
+
"version": "1.2.43",
|
|
4
4
|
"description": "A simple coffescript runtime and app manager",
|
|
5
5
|
"main": "main.js",
|
|
6
6
|
"directories": {
|
|
@@ -38,6 +38,7 @@
|
|
|
38
38
|
"colors": "^1.4.0",
|
|
39
39
|
"deasync": "^0.1.30",
|
|
40
40
|
"js-yaml": "^4.1.0",
|
|
41
|
+
"loading-cli": "^1.1.2",
|
|
41
42
|
"tiny-msgpack": "^2.2.0",
|
|
42
43
|
"uuid": "^9.0.1",
|
|
43
44
|
"vm": "^0.1.0",
|