main.js 2.5 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586
  1. #!/usr/bin/env node
  2. // Gestion des commandes et des options de l'application
  3. const argv = require('yargs')
  4. .command('serve [port]', 'start the Loquicompta server', (yargs) => {
  5. yargs.positional('port', {describe: 'port to bind', default: 80});
  6. }, (argv) => {
  7. })
  8. .command('dev', 'start the Loquicompta server on 8080 port with verbose', (yargs) => {
  9. }, (argv) => {
  10. argv.port = 8080;
  11. argv.verbose = 1;
  12. })
  13. .option('port', {
  14. alias: 'p',
  15. default: 80
  16. })
  17. .option('auth', {
  18. default: true
  19. })
  20. .count('verbose')
  21. .alias('v', 'verbose')
  22. .count('sql')
  23. .alias('s', 'sql')
  24. .describe('p', 'port to bind')
  25. .describe('auth', 'disables authentication')
  26. .describe('v', 'show server informations')
  27. .describe('s', 'show sql informations')
  28. .argv;
  29. // Chargement fichier config
  30. const config = require('./src/config');
  31. // Bibliotheques
  32. const express = require('express');
  33. const portfinder = require('portfinder');
  34. // Creation variable globale
  35. global.app = express();
  36. if (!config.auth) {
  37. global.auth = false;
  38. } else {
  39. global.auth = argv.auth;
  40. }
  41. global.storage = config.storage;
  42. global.verbose = argv.verbose >= 1;
  43. global.sqlVerbose = argv.sql >= 1;
  44. // Configuration server
  45. app.use(express.json());
  46. require('./src/route');
  47. // Lancement serveur sur le port demandé
  48. portfinder.basePort = argv.port;
  49. portfinder.highestPort = argv.port;
  50. portfinder.getPortPromise()
  51. .then((port) => {
  52. app.listen(argv.port, () => {
  53. console.info(`Server starting on port ${port} (http://localhost:${port})`);
  54. });
  55. })
  56. .catch((err) => {
  57. if(err.toString().includes('Error: No open ports found') && config.findPort) {
  58. console.info(`Port ${argv.port} not available, search for a new available port`);
  59. } else {
  60. console.error(err.toString());
  61. console.info('Unable to start the server, end of execution');
  62. process.exit();
  63. }
  64. });
  65. // Recherche d'un port ouvert
  66. portfinder.basePort = 8000;
  67. portfinder.highestPort = 65535;
  68. portfinder.getPortPromise()
  69. .then((port) => {
  70. app.listen(port, () => {
  71. console.info(`New available port found: ${port}`);
  72. console.info(`Server starting on port ${port} (http://localhost:${port})`);
  73. });
  74. })
  75. .catch((err) => {
  76. console.err(err);
  77. console.info('Unable to start the server, end of execution');
  78. process.exit();
  79. });