@makano/rew 1.2.42 → 1.2.44
Sign up to get free protection for your applications and to get access to all the features.
- 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/pkgs/rune.js +8 -1
- 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/pkgs/rune.js
CHANGED
@@ -169,6 +169,7 @@ const createDB = (dbName, dirname, dbData = {}, encryptionKey) => {
|
|
169
169
|
};
|
170
170
|
|
171
171
|
const update = (caseRecord, newRecord) => {
|
172
|
+
|
172
173
|
let id;
|
173
174
|
if (typeof caseRecord === 'string') {
|
174
175
|
id = caseRecord;
|
@@ -224,6 +225,9 @@ const createDB = (dbName, dirname, dbData = {}, encryptionKey) => {
|
|
224
225
|
if (typeof criteria == 'string') return read(criteria);
|
225
226
|
if (!criteria || typeof criteria !== 'object') return null;
|
226
227
|
|
228
|
+
|
229
|
+
if (!fs.existsSync(collectionFilePath)) writeDataFile(collectionFilePath, []);
|
230
|
+
|
227
231
|
const data = readDataFile(collectionFilePath);
|
228
232
|
const record =
|
229
233
|
data.find((record) => {
|
@@ -240,7 +244,6 @@ const createDB = (dbName, dirname, dbData = {}, encryptionKey) => {
|
|
240
244
|
|
241
245
|
const remove = (id) => {
|
242
246
|
if ('@rune.id' in id) id = id['@rune.id'];
|
243
|
-
if (!fs.existsSync(collectionFilePath)) return false;
|
244
247
|
let data = readDataFile(collectionFilePath);
|
245
248
|
const index = data.findIndex((record) => record['@rune.id'] === id);
|
246
249
|
if (index !== -1) {
|
@@ -293,6 +296,8 @@ const createDB = (dbName, dirname, dbData = {}, encryptionKey) => {
|
|
293
296
|
return sortedData;
|
294
297
|
};
|
295
298
|
|
299
|
+
if (!fs.existsSync(collectionFilePath)) writeDataFile(collectionFilePath, []);
|
300
|
+
|
296
301
|
return {
|
297
302
|
insert,
|
298
303
|
read,
|
@@ -377,6 +382,8 @@ const createDB = (dbName, dirname, dbData = {}, encryptionKey) => {
|
|
377
382
|
return data;
|
378
383
|
};
|
379
384
|
|
385
|
+
if (!fs.existsSync(mapFilePath)) writeDataFile(mapFilePath, {});
|
386
|
+
|
380
387
|
return { set, get, remove, list, transform };
|
381
388
|
};
|
382
389
|
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@makano/rew",
|
3
|
-
"version": "1.2.
|
3
|
+
"version": "1.2.44",
|
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",
|