@makano/rew 1.2.58 → 1.2.59
Sign up to get free protection for your applications and to get access to all the features.
- package/lib/rew/cli/cli.js +31 -3
- package/lib/rew/cli/utils.js +23 -3
- package/package.json +1 -1
package/lib/rew/cli/cli.js
CHANGED
@@ -5,7 +5,7 @@ const path = require('path');
|
|
5
5
|
const { hideBin } = require('yargs/helpers');
|
6
6
|
const { execSync } = require('child_process');
|
7
7
|
const utils = require('./utils');
|
8
|
-
const { existsSync, readFileSync, writeFileSync, mkdirSync, statSync } = require('fs');
|
8
|
+
const { existsSync, readFileSync, writeFileSync, mkdirSync, statSync, unlinkSync } = require('fs');
|
9
9
|
const { log } = require('./log');
|
10
10
|
const os = require('os');
|
11
11
|
const crypto = require('crypto');
|
@@ -18,6 +18,7 @@ const colors = require('colors');
|
|
18
18
|
const { req } = require('../misc/req');
|
19
19
|
const { gen_key } = require('../misc/bin');
|
20
20
|
const { REW_FILE_TYPE } = require('../const/ext');
|
21
|
+
const { generateRandomID } = require('../functions/id');
|
21
22
|
|
22
23
|
if (!existsSync(CONFIG_PATH) || !existsSync(CONFIG_PATH + '/repos.yaml')) {
|
23
24
|
mkdirSync(CONFIG_PATH, { recursive: true });
|
@@ -62,9 +63,36 @@ yargs(hideBin(process.argv))
|
|
62
63
|
log('File not found:'.red.bold, argv.file, ':end');
|
63
64
|
return;
|
64
65
|
}
|
65
|
-
utils.runFileWithArgv(filePath, { onlyCompile: argv.compile, watch: argv.watch });
|
66
|
+
utils.runFileWithArgv(filePath, { async: !process.stdin.isTTY, onlyCompile: argv.compile, watch: argv.watch });
|
66
67
|
},
|
67
68
|
)
|
69
|
+
.command(
|
70
|
+
'exec [code]',
|
71
|
+
'Executes in REPL',
|
72
|
+
(yargs) => {
|
73
|
+
yargs
|
74
|
+
.option('compile', {
|
75
|
+
alias: 'c',
|
76
|
+
describe: 'Compile and output the javascript',
|
77
|
+
type: 'boolean',
|
78
|
+
});
|
79
|
+
},
|
80
|
+
async (argv) => {
|
81
|
+
const replFile = '/tmp/rew-'+generateRandomID()+'-'+Date.now()+'.coffee';
|
82
|
+
let code = argv.code;
|
83
|
+
if(!process.stdin.isTTY) {
|
84
|
+
code = await utils.getAllPipeInput();
|
85
|
+
}
|
86
|
+
writeFileSync(replFile, code);
|
87
|
+
try{
|
88
|
+
utils.runFileWithArgv(replFile, { async: !process.stdin.isTTY, onlyCompile: argv.compile });
|
89
|
+
} catch(e){
|
90
|
+
console.error(e);
|
91
|
+
} finally {
|
92
|
+
unlinkSync(replFile);
|
93
|
+
}
|
94
|
+
}
|
95
|
+
)
|
68
96
|
.command(
|
69
97
|
'conf <command> [path] [key] [value]',
|
70
98
|
'Configuration management',
|
@@ -363,4 +391,4 @@ yargs(hideBin(process.argv))
|
|
363
391
|
utils.build(argv);
|
364
392
|
},
|
365
393
|
)
|
366
|
-
.help(!isFileGiven).argv;
|
394
|
+
.help(!isFileGiven).argv;
|
package/lib/rew/cli/utils.js
CHANGED
@@ -36,7 +36,7 @@ module.exports = {
|
|
36
36
|
|
37
37
|
const runIt = () => {
|
38
38
|
if (options.watch) console.clear();
|
39
|
-
const imports = execRewFile(filePath, [filePath, ...(argv || [])], { onlyCompile: options?.onlyCompile });
|
39
|
+
const imports = execRewFile(filePath, [filePath, ...(argv || [])], { onlyCompile: options?.onlyCompile, async: options?.async });
|
40
40
|
if (options.watch) {
|
41
41
|
imports.forEach((file) => {
|
42
42
|
watchIt(file);
|
@@ -48,7 +48,7 @@ module.exports = {
|
|
48
48
|
runIt();
|
49
49
|
},
|
50
50
|
runFileWithArgv(filePath, options = {}, cargv) {
|
51
|
-
|
51
|
+
let argv = cargv || process.argv;
|
52
52
|
argv.shift();
|
53
53
|
if (argv[0].endsWith(REW_FILE_TYPE.EXTENSION) || argv[0].endsWith('.coffee')) {
|
54
54
|
if (argv[1] == 'run') {
|
@@ -57,6 +57,12 @@ module.exports = {
|
|
57
57
|
argv.splice(0, 3);
|
58
58
|
} else argv.splice(0, 2);
|
59
59
|
}
|
60
|
+
if (argv[1] == 'exec') {
|
61
|
+
argv.splice(0, 2);
|
62
|
+
}
|
63
|
+
if (argv.includes('--')) {
|
64
|
+
argv = argv.slice(argv.indexOf('--') + 1, argv.length);
|
65
|
+
}
|
60
66
|
this.runFile(filePath, options, argv)
|
61
67
|
},
|
62
68
|
conf(command, fullPath, key, value) {
|
@@ -190,7 +196,7 @@ module.exports = {
|
|
190
196
|
});
|
191
197
|
r = path.resolve(root, c.exec.entry.replace(new RegExp(path.extname(c.exec.entry).replace('.', '\\.') + '$'), options.translate ? '.js' : '.qrew'));
|
192
198
|
}
|
193
|
-
this.runFileWithArgv(r);
|
199
|
+
this.runFileWithArgv(r, { async: !process.stdin.isTTY });
|
194
200
|
}
|
195
201
|
};
|
196
202
|
|
@@ -542,5 +548,19 @@ module.exports = {
|
|
542
548
|
fs.mkdirSync(binpath, { recursive: true });
|
543
549
|
fs.mkdirSync(cachepath, { recursive: true });
|
544
550
|
fs.mkdirSync(logspath, { recursive: true });
|
551
|
+
},
|
552
|
+
getAllPipeInput(){
|
553
|
+
return new Promise((resolve) => {
|
554
|
+
let data = '';
|
555
|
+
process.stdin.setEncoding('utf8');
|
556
|
+
|
557
|
+
process.stdin.on('data', (chunk) => {
|
558
|
+
data += chunk;
|
559
|
+
});
|
560
|
+
|
561
|
+
process.stdin.on('end', () => {
|
562
|
+
resolve(data);
|
563
|
+
});
|
564
|
+
});
|
545
565
|
}
|
546
566
|
};
|