@makano/rew 1.2.32 → 1.2.34
Sign up to get free protection for your applications and to get access to all the features.
- package/lib/rew/cli/cli.js +45 -36
- package/lib/rew/functions/require.js +34 -12
- 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 } = require('fs');
|
8
|
+
const { existsSync, readFileSync, writeFileSync, mkdirSync, statSync } = require('fs');
|
9
9
|
const { log } = require('./log');
|
10
10
|
const os = require('os');
|
11
11
|
const crypto = require('crypto');
|
@@ -18,13 +18,22 @@ const colors = require('colors');
|
|
18
18
|
const { req } = require('../misc/req');
|
19
19
|
const { gen_key } = require('../misc/bin');
|
20
20
|
|
21
|
-
if (!existsSync(CONFIG_PATH) || !existsSync(CONFIG_PATH+'/repos.yaml')) {
|
21
|
+
if (!existsSync(CONFIG_PATH) || !existsSync(CONFIG_PATH + '/repos.yaml')) {
|
22
22
|
mkdirSync(CONFIG_PATH, { recursive: true });
|
23
23
|
utils.initFirst();
|
24
24
|
}
|
25
25
|
|
26
26
|
const npm_package_name = '@makano/rew';
|
27
27
|
|
28
|
+
function isFileArgument(file) {
|
29
|
+
try {
|
30
|
+
return existsSync(file) && statSync(file).isFile();
|
31
|
+
} catch {
|
32
|
+
return false;
|
33
|
+
}
|
34
|
+
}
|
35
|
+
|
36
|
+
const isFileGiven = isFileArgument(hideBin(process.argv)[0]) || hideBin(process.argv)[0] == 'run';
|
28
37
|
yargs(hideBin(process.argv))
|
29
38
|
.command(
|
30
39
|
'$0 <file>',
|
@@ -112,25 +121,25 @@ yargs(hideBin(process.argv))
|
|
112
121
|
describe: 'Path of the app to run',
|
113
122
|
type: 'string',
|
114
123
|
})
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
|
123
|
-
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
128
|
-
|
129
|
-
|
130
|
-
|
131
|
-
|
132
|
-
|
133
|
-
|
124
|
+
.option('dev', {
|
125
|
+
describe: 'If your entry file is a .qrew, then just use the .coffee instead',
|
126
|
+
type: 'boolean',
|
127
|
+
})
|
128
|
+
.option('entry', {
|
129
|
+
alias: 'e',
|
130
|
+
describe: 'Choose entry file from app.config.exec',
|
131
|
+
type: 'string',
|
132
|
+
})
|
133
|
+
.option('build', {
|
134
|
+
alias: 'b',
|
135
|
+
describe: 'Builds to a .qrew before running',
|
136
|
+
type: 'boolean',
|
137
|
+
})
|
138
|
+
.option('translate', {
|
139
|
+
alias: 't',
|
140
|
+
describe: 'Builds to a .js before running, only used when --build is passed',
|
141
|
+
type: 'boolean',
|
142
|
+
});
|
134
143
|
},
|
135
144
|
(argv) => {
|
136
145
|
utils.runApp(argv.path, argv);
|
@@ -141,16 +150,16 @@ yargs(hideBin(process.argv))
|
|
141
150
|
'Add secrets to the current path',
|
142
151
|
(yargs) => {
|
143
152
|
yargs
|
144
|
-
|
145
|
-
|
146
|
-
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
|
153
|
-
|
153
|
+
.positional('command', {
|
154
|
+
describe: 'Path of the app to run',
|
155
|
+
type: 'string',
|
156
|
+
})
|
157
|
+
.option('file', {
|
158
|
+
alias: 'f',
|
159
|
+
describe: 'Set file name',
|
160
|
+
type: 'string',
|
161
|
+
default: 'secrets.qrew'
|
162
|
+
})
|
154
163
|
},
|
155
164
|
(argv) => {
|
156
165
|
const appPath = findAppInfo(path.join(process.cwd(), 'app.yaml'));
|
@@ -225,7 +234,7 @@ yargs(hideBin(process.argv))
|
|
225
234
|
});
|
226
235
|
},
|
227
236
|
async (argv) => {
|
228
|
-
if(argv.requirements) utils.installReq(argv.path, argv);
|
237
|
+
if (argv.requirements) utils.installReq(argv.path, argv);
|
229
238
|
else utils.installAppFrom(argv.path, argv);
|
230
239
|
},
|
231
240
|
)
|
@@ -254,9 +263,9 @@ yargs(hideBin(process.argv))
|
|
254
263
|
async (argv) => {
|
255
264
|
const pkg = JSON.parse(readFileSync(path.resolve(__dirname, '../../../package.json'), { encoding: 'utf-8' }));
|
256
265
|
const getLatest = async () => {
|
257
|
-
try{
|
266
|
+
try {
|
258
267
|
return (await req(`https://registry.npmjs.org/${pkg.name}`)).data['dist-tags'].latest
|
259
|
-
} catch(e) {
|
268
|
+
} catch (e) {
|
260
269
|
return `(${'!err'.blue.bgRed}, see ${`https://npmjs.com/package/${pkg.name}`.blue.underline})`;
|
261
270
|
}
|
262
271
|
}
|
@@ -265,7 +274,7 @@ yargs(hideBin(process.argv))
|
|
265
274
|
const latest = await getLatest();
|
266
275
|
const isLatest = latest === pkg.version;
|
267
276
|
log(`Latest: ${pkg.name.cyan.bold}@${latest.yellow.bold}`.green.bold, isLatest ? ':end' : '');
|
268
|
-
if(!isLatest){
|
277
|
+
if (!isLatest) {
|
269
278
|
log(`There is an update available`.cyan.bold);
|
270
279
|
log('Update With:'.yellow, `npm i -g ${npm_package_name}`.green.bold, ':end');
|
271
280
|
}
|
@@ -326,4 +335,4 @@ yargs(hideBin(process.argv))
|
|
326
335
|
utils.build(argv);
|
327
336
|
},
|
328
337
|
)
|
329
|
-
.help().argv;
|
338
|
+
.help(!isFileGiven).argv;
|
@@ -3,6 +3,7 @@ const path = require('path');
|
|
3
3
|
|
4
4
|
module.exports.customRequire = function customRequire(modulePath, filePath) {
|
5
5
|
const resolvedPath = resolveModulePath(modulePath, filePath);
|
6
|
+
if(!resolvedPath) throw new Error('Module '+modulePath+' not found');
|
6
7
|
return require(resolvedPath);
|
7
8
|
};
|
8
9
|
|
@@ -20,19 +21,40 @@ function resolveModulePath(modulePath, filePath) {
|
|
20
21
|
if (fs.existsSync(fullPath + '.json')) {
|
21
22
|
return fullPath + '.json';
|
22
23
|
}
|
24
|
+
|
23
25
|
if (fs.existsSync(fullPath) && fs.statSync(fullPath).isDirectory()) {
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
}
|
32
|
-
const indexPath = path.join(fullPath, 'index.js');
|
33
|
-
if (fs.existsSync(indexPath)) {
|
34
|
-
return indexPath;
|
35
|
-
}
|
26
|
+
return searchInPath(fullPath);
|
27
|
+
}
|
28
|
+
|
29
|
+
const rootPath = modulePath.split('/').shift();
|
30
|
+
const halfFullPath = path.join(basePath, rootPath);
|
31
|
+
if (fs.existsSync(halfFullPath) && fs.statSync(halfFullPath).isDirectory()) {
|
32
|
+
return searchInPath(halfFullPath, ['.'].concat(fullPath.split('/').slice(1)).join('/'));
|
36
33
|
}
|
37
34
|
}
|
38
35
|
}
|
36
|
+
|
37
|
+
function searchInPath(fullPath, exportses){
|
38
|
+
const packageJsonPath = path.join(fullPath, 'package.json');
|
39
|
+
if (fs.existsSync(packageJsonPath)) {
|
40
|
+
const packageJson = require(packageJsonPath);
|
41
|
+
let main = packageJson.main || 'index.js';
|
42
|
+
if(exportses){
|
43
|
+
if(packageJson.exports){
|
44
|
+
if(exportses in packageJson.exports) main = packageJson.exports[exportses];
|
45
|
+
}
|
46
|
+
}
|
47
|
+
if(typeof main == "object"){
|
48
|
+
if(Array.isArray(main)) main = main[0].require;
|
49
|
+
else main = main.require;
|
50
|
+
}
|
51
|
+
const mainPath = path.join(fullPath, main);
|
52
|
+
if (fs.existsSync(mainPath)) {
|
53
|
+
return mainPath;
|
54
|
+
}
|
55
|
+
}
|
56
|
+
const indexPath = path.join(fullPath, 'index.js');
|
57
|
+
if (fs.existsSync(indexPath)) {
|
58
|
+
return indexPath;
|
59
|
+
}
|
60
|
+
}
|