@makano/rew 1.3.3 → 1.3.5

Sign up to get free protection for your applications and to get access to all the features.
@@ -6,7 +6,6 @@ const path = require('path');
6
6
  const { hideBin } = require('yargs/helpers');
7
7
  const { existsSync, readFileSync, writeFileSync, statSync, unlinkSync } = require('fs');
8
8
  const { log } = require('./log');
9
- const rune = require('../pkgs/rune');
10
9
  const { to_qrew, from_qrew } = require('../qrew/compile');
11
10
  const { findAppInfo } = require('../misc/findAppInfo');
12
11
  const { input } = require('../functions/stdout');
@@ -74,7 +73,11 @@ yargs(hideBin(process.argv))
74
73
  alias: 'c',
75
74
  describe: 'Compile and output the javascript',
76
75
  type: 'boolean',
77
- });
76
+ })
77
+ .example('rew exec "print \'hi\'"', "Executes code")
78
+ .example('echo "print \\hi\'" | rew exec', "Executes code from pipe")
79
+ .example('rew exec "print \'hi\'" -- arg1', "Executes code with arguments")
80
+ .example('echo "print \\hi\'" | rew exec -- arg1', "Executes code from pipe with arguments");
78
81
  },
79
82
  async (argv) => {
80
83
  const replFile = '/tmp/rew-'+generateRandomID()+'-'+Date.now()+'.coffee';
@@ -116,7 +119,17 @@ yargs(hideBin(process.argv))
116
119
  describe: 'Value to set (only used with "set" command)',
117
120
  type: 'string',
118
121
  default: '',
119
- });
122
+ })
123
+ .example('rew conf get', 'Get all the possible conf-sets')
124
+ .example('rew conf get app.package', 'Get all files for app.package')
125
+ .example('rew conf get app.package/_default', 'Get all default configs for app.package')
126
+ .example('rew conf get app.package/[optionGroup]', 'Get all configs for app.package/[optionGroup]')
127
+ .example('rew conf get app.package/[optionGroup] [key]', 'Get value of \'key\' for app.package/[optionGroup]')
128
+ .example('rew conf get app.package/app', 'List all files for the app if the app is installed')
129
+ .example('rew conf get app.package/path/to/file', 'Reads file or lists directory')
130
+
131
+ .example('rew conf set app.package/[optionGroup] [key] "[value]"', "Sets 'key' to 'value' for app.package/[optionGroup]")
132
+ .example('rew conf remove app.package/[optionGroup] [key]', "Removes 'key' from app.package/[optionGroup]");
120
133
  },
121
134
  (argv) => {
122
135
  const { command, path, key, value } = argv;
@@ -152,21 +165,20 @@ yargs(hideBin(process.argv))
152
165
  describe: `Use default options`,
153
166
  type: 'boolean',
154
167
  default: false
155
- });
168
+ })
169
+ .example('rew create /path/to/project', 'Open interactive shell to create app at path')
170
+ .example('rew create -i /path/to/project', 'Create without interactive shell')
171
+ .example('rew create -n package.name /path/to/project', 'Create with "-n" as a package name')
172
+ .example('rew create -t /path/to/project', 'Enable types')
173
+ .example('rew create -c /path/to/project', 'Enable civet for main')
174
+ .example('rew create -g /path/to/project', 'Setup git')
175
+ .example('rew create -git /path/to/project', '(Recommended) Setup git, no interactive shell, enable types.')
176
+ .example('rew create -gitn package.name /path/to/project', '(Recommended) Setup git, no interactive shell, enable types, set package name.');
156
177
  },
157
178
  (argv) => {
158
179
  require('./utils').createProject(argv.path, argv);
159
180
  },
160
181
  )
161
- .command(
162
- 'rune-keygen',
163
- 'Generate a rune encryption key',
164
- (yargs) => {
165
- },
166
- (argv) => {
167
- console.log('Encryption Key:', rune({}).genKey(input('Secret Value: ') || null));
168
- },
169
- )
170
182
  .command(
171
183
  'run <path | package>',
172
184
  'Run an app',
@@ -193,7 +205,12 @@ yargs(hideBin(process.argv))
193
205
  alias: 't',
194
206
  describe: 'Builds to a .js before running, only used when --build is passed',
195
207
  type: 'boolean',
196
- });
208
+ })
209
+ .example('rew run .', "Run the current directory as an app")
210
+ .example('rew run package.name', "Run 'package.name' if it's installed")
211
+ .example('rew run . -b', "Build files into .qrew before running")
212
+ .example('rew run . --dev -b', `If current entry file ends with .qrew it changes it to .coffee or ${REW_FILE_TYPE.EXTENSION} instead, and builds it before running the build`)
213
+ .example('rew run . -e test', "Runs the 'test' entry from the 'app.yaml' if exists")
197
214
  },
198
215
  (argv) => {
199
216
  require('./utils').runApp(argv.path, argv);
@@ -289,7 +306,14 @@ yargs(hideBin(process.argv))
289
306
  alias: 'y',
290
307
  describe: 'Auto yes',
291
308
  type: 'boolean',
292
- });
309
+ })
310
+ .example('rew install /path/to/app', "Installs path into the rew conf directory.")
311
+ .example('rew install -r /path/to/app', "Installs all the required libraries/apps for the specified app.")
312
+ .example('rew install github:username/repo', "Clones the repo and installs it to rew")
313
+ .example('rew install -yu github:username/repo', "Installs from github without asking for confirmation and auto updates")
314
+ .example('rew install github:username/repo@branch', "Installs a specific branch from github(default is main)")
315
+ .example('rew install github:username/repo#commit', "Installs a specific commit from github(default is latest)")
316
+ .example('rew install github:username/repo@branch#commit', "Installs a specific commit from a branch in a github repository");
293
317
  },
294
318
  async (argv) => {
295
319
  if (argv.requirements) require('./utils').installReq(argv.path, argv);
@@ -307,7 +331,9 @@ yargs(hideBin(process.argv))
307
331
  alias: 'a',
308
332
  describe: 'Remove the configs as well',
309
333
  type: 'boolean',
310
- });
334
+ })
335
+ .example('rew uninstall package.name', "Uninstalls app package.name, but keeps the data/configs")
336
+ .example('rew uninstall -a package.name', "Uninstalls app package.name entirely");
311
337
  },
312
338
  async (argv) => {
313
339
  require('./utils').uninstall(argv.package, argv.all);
@@ -373,10 +399,12 @@ yargs(hideBin(process.argv))
373
399
  yargs.positional('command', {
374
400
  describe: 'Misc command name',
375
401
  type: 'string',
376
- });
402
+ })
403
+ .example('rew misc types', 'Fixes types for libraries and rew runtime')
404
+ .example('rew misc keygen', 'Generate a rune encryption key')
377
405
  },
378
406
  (argv) => {
379
- require('./miscUtils')[argv.command](...argv._.slice(1));
407
+ require('./miscUtils')[argv.command]?.(...argv._.slice(1));
380
408
  },
381
409
  )
382
410
  .command(
@@ -1,9 +1,11 @@
1
1
  const { findAppInfo } = require("../misc/findAppInfo");
2
2
  const { log } = require("./log");
3
3
  const colors = require('colors');
4
+ const { input } = require('../functions/stdout');
4
5
  const path = require('path');
5
6
  const fs = require('fs');
6
7
  const { CONFIG_PATH } = require("../const/config_path");
8
+ const rune = require("../pkgs/rune");
7
9
 
8
10
  module.exports = {
9
11
  types(projectPath){
@@ -37,5 +39,5 @@ module.exports = {
37
39
  if(fs.existsSync(p)) fs.copyFileSync(p, path.join(projectPath, 'node_modules/@types/rew/'+filename));
38
40
  });
39
41
  },
40
-
42
+ 'keygen': () => console.log('Encryption Key:', rune({}).genKey(input('Secret Value: ') || null))
41
43
  }
@@ -4,9 +4,7 @@ const conf = require('../pkgs/conf');
4
4
  const jsYaml = require('js-yaml');
5
5
  const readline = require('readline');
6
6
  const { log, logget } = require('./log');
7
- const { fork, execSync, exec } = require('child_process');
8
- const { run } = require('../main');
9
- const { generateRandomID } = require('../functions/id');
7
+ const { execSync } = require('child_process');
10
8
  const { compile } = require('../modules/compiler');
11
9
  const { to_qrew } = require('../qrew/compile');
12
10
  const { findAppInfo } = require('../misc/findAppInfo');
@@ -100,7 +98,10 @@ module.exports = {
100
98
  confObj.types = ['rew'];
101
99
  }
102
100
  fs.writeFileSync(confPath, jsYaml.dump(confObj));
103
- fs.writeFileSync(entryFile, `print("Hello World!")`);
101
+ fs.writeFileSync(entryFile, `using namespace std::ns ->
102
+ define Main class
103
+ @main: (argv) ->
104
+ print 'Hello, World!'`);
104
105
  fs.mkdirSync(path.join(projectPath, 'assets'), { recursive: true });
105
106
  if (project.git) {
106
107
  fs.writeFileSync(path.join(projectPath, '.gitignore'), `node_modules/\npackage-lock.json`);
@@ -76,7 +76,12 @@ module.exports.prepareContext = function (
76
76
  if(!context.module.exports) context.module.exports = {};
77
77
  context.module.exports[name] = object;
78
78
  context[name] = object;
79
- }, Main: (cb) => (['main', cb?.main ?? cb]), attach: (object) => {
79
+ }, Main: (cb) => {
80
+ if(cb?.main){
81
+ cb.main._class = cb;
82
+ }
83
+ return (['main', cb?.main ?? cb]);
84
+ }, attach: (object) => {
80
85
  for(let i in object){
81
86
  if(!context[i]) context[i] = object[i];
82
87
  }
@@ -52,9 +52,16 @@ module.exports.runPath = function runPath(filepath, options = {}, custom_context
52
52
 
53
53
  if(context.module.main && (context.module.exports?.main || (typeof context.module.exports == "function" && context.module.exports.name == 'main'))){
54
54
  const mainFn = context.module.exports.main ?? context.module.exports;
55
+ let ctx = context;
56
+ if(mainFn._class){
57
+ ctx = mainFn._class;
58
+ for(let i in context){
59
+ ctx[i] = context[i];
60
+ }
61
+ }
55
62
  return {
56
63
  context,
57
- returns: mainFn.call(context, context.process.argv)
64
+ returns: mainFn.call(ctx, context.process.argv)
58
65
  }
59
66
  } else {
60
67
  return {
@@ -66,7 +66,7 @@ module.exports = (context) => ({
66
66
  };
67
67
 
68
68
  const createOptionCenter = (name, defaults = {}) => {
69
- const optionRoot = path.join(rootPath, name + '.yaml');
69
+ const optionRoot = path.join(rootPath, name.endsWith('.yaml') ? name : name + '.yaml');
70
70
  if (!fs.existsSync(path.dirname(optionRoot))) fs.mkdirSync(path.dirname(optionRoot), { recursive: true });
71
71
  if (!fs.existsSync(optionRoot)) {
72
72
  conf[name] = defaults;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@makano/rew",
3
- "version": "1.3.3",
3
+ "version": "1.3.5",
4
4
  "description": "A simple coffescript runtime and app manager",
5
5
  "main": "main.js",
6
6
  "directories": {