qcobjects-cli 2.3.34 → 2.3.47

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/.gitlab-ci.yml ADDED
@@ -0,0 +1,15 @@
1
+ image: node:latest
2
+
3
+ stages:
4
+ - deploy
5
+
6
+ deploy:
7
+ stage: deploy
8
+ rules:
9
+ - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH || $CI_COMMIT_REF_NAME =~ /^v\d+\.\d+\.\d+.*$/
10
+ changes:
11
+ - package.json
12
+ script:
13
+ - echo "registry=https://registry.npmjs.org/:_authToken=${NPM_TOKEN}">.npmrc
14
+ - npm ci
15
+ - npm publish
package/VERSION CHANGED
@@ -1 +1 @@
1
- 2.3.34
1
+ 2.3.47
@@ -180,11 +180,13 @@ Package("org.quickcorp.qcobjects.cli",[
180
180
  var _dirnames = function (pathname){
181
181
  fs.readdir(pathname,{withFileTypes:true},function (err,files){
182
182
  var _pathnames = [];
183
- files.filter((f)=>{return f.isDirectory();}).map((d)=>{
183
+ if (typeof files !== "undefined"){
184
+ files.filter((f)=>{return f.isDirectory();}).map((d)=>{
184
185
  _pathnames.push(pathname+"/"+d.name);
185
186
  callback(pathname+"/"+d.name);
186
187
  _dirnames(pathname+"/"+d.name);
187
188
  });
189
+ }
188
190
  _main_pathnames = _main_pathnames.concat(_pathnames);
189
191
  });
190
192
  return _main_pathnames;
@@ -227,6 +229,7 @@ Package("org.quickcorp.qcobjects.cli",[
227
229
 
228
230
  },
229
231
  create:function (_appName, options){
232
+ const version = global.__get_version__();
230
233
  let switchCommander = this;
231
234
  let appName = (typeof _appName ==="undefined" || _appName === true)?("MyAppName"):(_appName);
232
235
 
@@ -244,119 +247,222 @@ Package("org.quickcorp.qcobjects.cli",[
244
247
  rl.close();
245
248
  let giturl = answer;
246
249
 
247
- let createAppCommandCustom = "echo \
248
- { \
249
- \"name\": \""+appName.toLowerCase()+"\", \
250
- \"repository\": { \
251
- \"type\": \"git\", \
252
- \"url\": \""+giturl+`" \
253
- }, \
254
- "description": "This is a custom NPM template app from ${options.createCustom} generated with QCObjects.", \
255
- "main": "js/init.js", \
256
- "license": "LGPL-3.0-or-later", \
257
- "dependencies": { \
258
- "${options.createCustom}": "latest", \
259
- "qcobjects": "latest" \
260
- } \
261
- } > package.json`;
262
-
263
-
264
- let createAppCommandPWA = "echo \
265
- { \
266
- \"name\": \""+appName.toLowerCase()+"\", \
267
- \"repository\": { \
268
- \"type\": \"git\", \
269
- \"url\": \""+giturl+"\" \
270
- }, \
271
- \"description\": \"Awesome PWA application that will help you achieve your dreams.\", \
272
- \"main\": \"js/init.js\", \
273
- \"license\": \"LGPL-3.0-or-later\", \
274
- \"dependencies\": { \
275
- \"qcobjectsnewapp\": \"latest\", \
276
- \"qcobjects\": \"latest\" \
277
- } \
278
- } > package.json";
279
-
280
- let createAppCommandAMP = "echo \
281
- { \
282
- \"name\": \""+appName.toLowerCase()+"\", \
283
- \"repository\": { \
284
- \"type\": \"git\", \
285
- \"url\": \""+giturl+"\" \
286
- }, \
287
- \"description\": \"Awesome AMP application that will help you achieve your dreams.\", \
288
- \"main\": \"js/init.js\", \
289
- \"license\": \"LGPL-3.0-or-later\", \
290
- \"dependencies\": { \
291
- \"qcobjects-ecommerce-amp\": \"latest\", \
292
- \"qcobjects\": \"latest\" \
293
- } \
294
- } > package.json";
295
-
296
- let createAppCommandPHP = `echo \
297
- { \
298
- "name": "${appName.toLowerCase()}", \
299
- "repository": {\
300
- "type": "git",\
301
- "url": "${giturl}"\
302
- },\
303
- "description": "Awesome PHP application that will help you achieve your dreams.",\
304
- "main": "js/init.js",\
305
- "license": "LGPL-3.0-or-later",\
306
- "devDependencies": {\
307
- "jasmine": "latest",\
308
- "qcobjects-cli": "latest"\
309
- },\
310
- "dependencies": {\
311
- "qcobjectsnewphp": "latest",\
312
- "qcobjects": "latest",\
313
- "qcobjects-sdk": "latest"\
314
- }\
315
- } > package.json`;
250
+ let createAppCommandCustom = `
251
+ {
252
+ "name": "${appName.toLowerCase()}",
253
+ "version": "0.0.1",
254
+ "repository": {
255
+ "type": "git",
256
+ "url": "${giturl}"
257
+ },
258
+ "description": "This is a custom NPM template app from ${options.createCustom} generated with QCObjects.",
259
+ "main": "js/init.js",
260
+ "license": "LGPL-3.0-or-later",
261
+ "scripts": {
262
+ "test": "(npx eslint *.js js/*.js js/packages/*.js --fix) && (npx jasmine)",
263
+ "sync": "git add . && git commit -am ",
264
+ "preversion": "npm i --upgrade && npm test",
265
+ "postversion": "git push && git push --tags",
266
+ "coverage": "nyc --reporter=lcov --reporter=text-summary npm run test",
267
+ "start": "node app.js",
268
+ "build": "exit 0"
269
+ },
270
+ "dependencies": {
271
+ "${options.createCustom}": "latest",
272
+ "qcobjects": "^${version.qcobjects}",
273
+ "qcobjects-sdk": "^${version.sdk}"
274
+ },
275
+ "devDependencies": {
276
+ "eslint": "^8.2.0",
277
+ "eslint-config-qcobjects": "latest",
278
+ "jasmine": "latest",
279
+ "qcobjects-cli": "^${version.cli}",
280
+ "grunt": "^1.4.1",
281
+ "grunt-contrib-jasmine": "^2.0.2",
282
+ "nyc": "^15.1.0"
283
+ }
284
+ }`;
285
+
286
+ let createAppCommandPWA = `
287
+ {
288
+ "name": "${appName.toLowerCase()}",
289
+ "version": "0.0.1",
290
+ "repository": {
291
+ "type": "git",
292
+ "url": "${giturl}"
293
+ },
294
+ "description": "Awesome PWA application that will help you achieve your dreams.",
295
+ "main": "js/init.js",
296
+ "license": "LGPL-3.0-or-later",
297
+ "scripts": {
298
+ "test": "(npx eslint *.js js/*.js js/packages/*.js --fix) && (npx jasmine)",
299
+ "sync": "git add . && git commit -am ",
300
+ "preversion": "npm i --upgrade && npm test",
301
+ "postversion": "git push && git push --tags",
302
+ "coverage": "nyc --reporter=lcov --reporter=text-summary npm run test",
303
+ "start": "node app.js",
304
+ "build": "exit 0"
305
+ },
306
+ "dependencies": {
307
+ "qcobjectsnewapp": "latest",
308
+ "qcobjects": "^${version.qcobjects}",
309
+ "qcobjects-sdk": "^${version.sdk}"
310
+ },
311
+ "devDependencies": {
312
+ "eslint": "^8.2.0",
313
+ "eslint-config-qcobjects": "latest",
314
+ "jasmine": "latest",
315
+ "qcobjects-cli": "^${version.cli}",
316
+ "grunt": "^1.4.1",
317
+ "grunt-contrib-jasmine": "^2.0.2",
318
+ "nyc": "^15.1.0"
319
+ }
320
+ }`;
321
+
322
+ let createAppCommandAMP = `echo
323
+ {
324
+ "name": "${appName.toLowerCase()}",
325
+ "version": "0.0.1",
326
+ "repository": {
327
+ "type": "git",
328
+ "url": "${giturl}"
329
+ },
330
+ "description": "Awesome AMP application that will help you achieve your dreams.",
331
+ "main": "js/init.js",
332
+ "license": "LGPL-3.0-or-later",
333
+ "scripts": {
334
+ "test": "(npx eslint *.js js/*.js js/packages/*.js --fix) && (npx jasmine)",
335
+ "sync": "git add . && git commit -am ",
336
+ "preversion": "npm i --upgrade && npm test",
337
+ "postversion": "git push && git push --tags",
338
+ "coverage": "nyc --reporter=lcov --reporter=text-summary npm run test",
339
+ "start": "node app.js",
340
+ "build": "exit 0"
341
+ },
342
+ "dependencies": {
343
+ "qcobjects-ecommerce-amp": "latest",
344
+ "qcobjects": "^${version.qcobjects}",
345
+ "qcobjects-sdk": "^${version.sdk}"
346
+ },
347
+ "devDependencies": {
348
+ "eslint": "^8.2.0",
349
+ "eslint-config-qcobjects": "latest",
350
+ "jasmine": "latest",
351
+ "qcobjects-cli": "^${version.cli}",
352
+ "grunt": "^1.4.1",
353
+ "grunt-contrib-jasmine": "^2.0.2",
354
+ "nyc": "^15.1.0"
355
+ }
356
+ }`;
357
+
358
+ let createAppCommandPHP = `
359
+ {
360
+ "name": "${appName.toLowerCase()}",
361
+ "version": "0.0.1",
362
+ "repository": {
363
+ "type": "git",
364
+ "url": "${giturl}"
365
+ },
366
+ "description": "Awesome PHP application that will help you achieve your dreams.",
367
+ "main": "js/init.js",
368
+ "license": "LGPL-3.0-or-later",
369
+ "scripts": {
370
+ "test": "(npx eslint *.js js/*.js js/packages/*.js --fix) && (npx jasmine)",
371
+ "sync": "git add . && git commit -am ",
372
+ "preversion": "npm i --upgrade && npm test",
373
+ "postversion": "git push && git push --tags",
374
+ "coverage": "nyc --reporter=lcov --reporter=text-summary npm run test",
375
+ "start": "node app.js",
376
+ "build": "exit 0"
377
+ },
378
+ "dependencies": {
379
+ "qcobjectsnewphp": "latest",
380
+ "qcobjects": "^${version.qcobjects}",
381
+ "qcobjects-sdk": "^${version.sdk}"
382
+ },
383
+ "devDependencies": {
384
+ "eslint": "^8.2.0",
385
+ "eslint-config-qcobjects": "latest",
386
+ "jasmine": "latest",
387
+ "qcobjects-cli": "^${version.cli}",
388
+ "grunt": "^1.4.1",
389
+ "grunt-contrib-jasmine": "^2.0.2",
390
+ "nyc": "^15.1.0"
391
+ }
392
+ }`;
316
393
 
317
394
  let createAppCommand;
318
395
  let appTemplateName;
396
+ let _package_json_content;
319
397
 
320
398
  if (options.createAmp){
321
399
  appTemplateName = "qcobjects-ecommerce-amp";
322
- createAppCommand = createAppCommandAMP;
400
+ _package_json_content = createAppCommandAMP;
323
401
  } else if (options.createPwa){
324
402
  appTemplateName = "qcobjectsnewapp";
325
- createAppCommand = createAppCommandPWA;
403
+ _package_json_content = createAppCommandPWA;
326
404
  } else if (options.createPhp){
327
405
  appTemplateName = "qcobjectsnewphp";
328
- createAppCommand = createAppCommandPHP;
406
+ _package_json_content = createAppCommandPHP;
329
407
  } else if (options.createCustom){
330
408
  appTemplateName = options.createCustom;
331
- createAppCommand = createAppCommandCustom;
409
+ _package_json_content = createAppCommandCustom;
332
410
  } else {
333
411
  appTemplateName = "qcobjectsnewapp";
334
- createAppCommand = createAppCommandPWA;
412
+ _package_json_content = createAppCommandPWA;
335
413
  }
336
414
  CONFIG.set("qcobjectsnewapp_path",CONFIG.get("node_modules_path")+"/"+appTemplateName);
337
- if (!process.platform.toLowerCase().startsWith("win")){
338
- createAppCommand = createAppCommand.replace(/(")/g, String.fromCharCode(92)+"\"");
339
- }
415
+ /* if (!process.platform.toLowerCase().startsWith("win")){
416
+ _package_json_content = _package_json_content.replace(/(")/g, String.fromCharCode(92)+"\"");
417
+ }*/
418
+ createAppCommand = "npm init -y";
419
+ let _package_json_file = path.resolve(CONFIG.get("projectPath"),"./package.json");
420
+ logger.debug("_package_json_file: "+_package_json_file);
340
421
  logger.debug(createAppCommand);
422
+
341
423
  exec(createAppCommand, (err, stdout, stderr) => {
342
- exec("npm cache verify && npm i --save-dev ", (err, stdout, stderr) => {
343
- Promise.resolve(switchCommander.copyTemplate()).then(()=>{
344
- logger.info("Good! Your application is getting done. You can play with QCObjects now!");
345
- logger.info("In about five seconds your server will start...");
346
- exec("qcobjects-createcert",(err,stdout,stderr)=>{
347
- logger.info("Test certificates generated");
348
- exec("npm uninstall "+appTemplateName+" --save && npm cache verify",(err,stdout,stderr)=>{
349
- switchCommander.generateServiceWorker(appName);
424
+ if (err) {
425
+ logger.warn(err);
426
+ process.exit(1);
427
+ return;
428
+ }
429
+ fs.writeFile(_package_json_file, _package_json_content, err => {
430
+ if (err) {
431
+ logger.warn(err);
432
+ process.exit(1);
433
+ return;
434
+ }
435
+
436
+ exec("npm cache verify && npm i --save-dev --legacy-peer-deps", (err, stdout, stderr) => {
437
+ if (err) {
438
+ logger.warn(err);
439
+ process.exit(1);
440
+ return;
441
+ }
442
+
443
+ Promise.resolve(switchCommander.copyTemplate())
444
+ .then(()=>{
445
+ logger.info("Good! Your application is getting done. You can play with QCObjects now!");
446
+ logger.info("In about five seconds your server will start...");
447
+ exec("qcobjects-createcert",(err,stdout,stderr)=>{
448
+ logger.info("Test certificates generated");
449
+
450
+ exec("npm uninstall "+appTemplateName+" --save && npm cache verify",(err,stdout,stderr)=>{
451
+ switchCommander.generateServiceWorker(appName);
452
+ });
453
+
454
+ }).stdout.on("data", function(data) {
455
+ console.log(data);
350
456
  });
351
- }).stdout.on("data", function(data) {
352
- console.log(data);
353
457
  });
458
+ }).stdout.on("data", function(data) {
459
+ console.log(data);
354
460
  });
355
- }).stdout.on("data", function(data) {
356
- console.log(data);
461
+
357
462
  });
463
+
358
464
  }).stdout.on("data", function(data) {
359
- console.log(data);
465
+ console.log("App generation started...");
360
466
  });
361
467
 
362
468
  });
@@ -375,7 +481,7 @@ Package("org.quickcorp.qcobjects.cli",[
375
481
  if (process.argv.length>1){
376
482
 
377
483
  switchCommander.program
378
- .version(global.__get_version__());
484
+ .version(global.__get_version_string__());
379
485
  switchCommander.program
380
486
  .command("create <appname>")
381
487
  .description("Creates an app with <appname>")
@@ -49,7 +49,16 @@ global.__get_version__ = function (){
49
49
  const package_config = require(absolutePath+"/package.json");
50
50
  const qcobjects_pkg_config = require("qcobjects/package.json");
51
51
  const qcobjects_sdk_pkg_config = require("qcobjects-sdk/package.json");
52
- return "QCObjects: v"+qcobjects_pkg_config.version+", SDK: v"+qcobjects_sdk_pkg_config.version+", CLI: v"+package_config.version;
52
+ return {
53
+ "qcobjects":qcobjects_pkg_config.version,
54
+ "sdk":qcobjects_sdk_pkg_config.version,
55
+ "cli":package_config.version
56
+ };
57
+ };
58
+
59
+ global.__get_version_string__ = function (){
60
+ const version = global.__get_version__();
61
+ return "QCObjects: v"+version.qcobjects+", SDK: v"+version.sdk+", CLI: v"+version.cli;
53
62
  };
54
63
 
55
64
 
@@ -118,3 +127,60 @@ try {
118
127
  logger.debug(e);
119
128
  logger.debug("Something went wrong trying to load config.json file in your project");
120
129
  }
130
+
131
+ (async function (){
132
+ /* Auto Discover dependencies (lib, handlers, commands) */
133
+ const path = require("path");
134
+ const projectPath = CONFIG.get("projectPath", `${process.cwd()}/`);
135
+ const hasKeyword = (p,keyword) => {
136
+ const {keywords} = require(`${findPackageNodePath(p)}/${p}/package.json`);
137
+ return typeof keywords !== "undefined" && keywords.includes(keyword);
138
+ };
139
+
140
+ const loadLibs = async () => {
141
+ let _ret_;
142
+ if (CONFIG.get("autodiscover", false) || CONFIG.get("autodiscover_libs",false)){
143
+ _ret_ = Promise.all(Object.keys(require(`${projectPath}/package.json`).dependencies).filter((p)=>hasKeyword(p,"qcobjects-lib")).map((p)=>Import(p))).then(()=>logger.info("Libs loaded"));
144
+ } else {
145
+ _ret_ = Promise.resolve();
146
+ logger.debug("To load libs, set autodiscover_libs to true in your config.json");
147
+ }
148
+ return _ret_;
149
+ };
150
+ const loadHandlers = async () => {
151
+ let _ret_;
152
+ if (CONFIG.get("autodiscover", false) || CONFIG.get("autodiscover_handlers",false)){
153
+ _ret_ = Promise.all(Object.keys(require(`${projectPath}/package.json`).dependencies).filter((p)=>hasKeyword(p,"qcobjects-handler")).map((p)=>Import(p))).then(()=>logger.info("Handlers loaded"));
154
+ } else {
155
+ _ret_ = Promise.resolve();
156
+ logger.debug("To load handlers, set autodiscover_handlers to true in your config.json");
157
+ }
158
+ return _ret_;
159
+ };
160
+ const loadCommands = async () => {
161
+ let _ret_;
162
+ if (CONFIG.get("autodiscover", false) || CONFIG.get("autodiscover_commands",false)){
163
+ _ret_ = Promise.all(Object.keys(require(`${projectPath}/package.json`).dependencies).filter((p)=>hasKeyword(p,"qcobjects-command")).map((p)=>Import(p))).then(()=>logger.info("Commands loaded"));
164
+ } else {
165
+ _ret_ = Promise.resolve();
166
+ logger.debug("To load commands, set autodiscover_commands to true in your config.json");
167
+ }
168
+ return _ret_;
169
+ };
170
+ if (CONFIG.get("autodiscover", false)
171
+ || CONFIG.get("autodiscover_libs",false)
172
+ || CONFIG.get("autodiscover_handlers",false)
173
+ || CONFIG.get("autodiscover_commands",false)
174
+ ){
175
+ logger.info("Auto discover is enabled");
176
+ } else if (!CONFIG.get("autodiscover", false)) {
177
+ logger.info("Auto discover is disabled");
178
+ logger.debug("To load all dependencies, set autodiscover to true in your config.json");
179
+ } else {
180
+ logger.info("Auto discover is disabled");
181
+ }
182
+
183
+ await loadLibs();
184
+ await loadHandlers();
185
+ await loadCommands();
186
+ })().then (()=>logger.info("Dependencies loaded"));
package/package.json CHANGED
@@ -1,20 +1,27 @@
1
1
  {
2
2
  "name": "qcobjects-cli",
3
- "version": "2.3.34",
3
+ "version": "2.3.47",
4
4
  "description": "qcobjects cli command line tool",
5
5
  "main": "qcobjects-cli.js",
6
6
  "scripts": {
7
7
  "sync": "git add . && git commit -am ",
8
8
  "test": "npx eslint **/*.js --fix && $(npm bin)/jasmine",
9
9
  "preversion": "npm i --upgrade && npm test",
10
- "postversion": "git push && git push --tags && npm publish"
10
+ "postversion": "git push && git push --tags"
11
11
  },
12
12
  "dependencies": {
13
13
  "commander": "^2.20.3",
14
14
  "mime": "^2.4.7",
15
- "qcobjects": "latest",
15
+ "qcobjects": "^2.3.66-lts",
16
16
  "qcobjects-sdk": "latest",
17
- "yaml": "^1.8.0"
17
+ "yaml": "^1.10.2"
18
+ },
19
+ "devDependencies": {
20
+ "eslint": "^8.2.0",
21
+ "eslint-config-qcobjects": "^0.0.13",
22
+ "jasmine": "^3.7.0",
23
+ "qcobjects": "^2.3.66-lts",
24
+ "qcobjects-cli": "latest"
18
25
  },
19
26
  "repository": {
20
27
  "type": "file",
@@ -54,10 +61,5 @@
54
61
  "qcobjects-gae-server": "./qcobjects-gae-http-server.js",
55
62
  "qcobjects-http-server": "./qcobjects-http-server.js",
56
63
  "qcobjects-collab": "./qcobjects-collab.js"
57
- },
58
- "devDependencies": {
59
- "eslint": "^6.8.0",
60
- "eslint-config-qcobjects": "0.0.6",
61
- "jasmine": "^3.7.0"
62
64
  }
63
65
  }
@@ -85,7 +85,7 @@ readline.emitKeypressEvents(process.stdin);
85
85
  if (process.stdin.isTTY)
86
86
  process.stdin.setRawMode(true);
87
87
 
88
- let qcobjects_version = global.__get_version__();
88
+ let qcobjects_version = global.__get_version_string__();
89
89
 
90
90
  const rl = readline.createInterface({
91
91
  input: process.stdin,