@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.
@@ -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;
@@ -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
- const argv = cargv || process.argv;
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
  };
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@makano/rew",
3
- "version": "1.2.58",
3
+ "version": "1.2.59",
4
4
  "description": "A simple coffescript runtime and app manager",
5
5
  "main": "main.js",
6
6
  "directories": {