main.js 3.2 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495
  1. #!/usr/bin/env node
  2. // Imports
  3. const program = require('commander');
  4. const inquirer = require('inquirer');
  5. const file = require('./src/file');
  6. const cst = require('./src/constant');
  7. // Variables configs et globales
  8. let preprocessFile = './data/preprocess.ppf';
  9. // Parametrage CLI
  10. program.version('0.0.1');
  11. program
  12. .option('-n, --name <string>', 'Nom de l\'auteur dont il faut chercher les co-auteurs')
  13. .option('-f, --file <source>', 'Chemin vers le fichier à utiliser pour la recherche des co-auteurs', preprocessFile)
  14. .option('-p, --process <source>', 'Prepare le fichier source et effectue la recherche des co-auteurs');
  15. program
  16. .command('prepare <source> [destination]')
  17. .description(`Prepare un fichier XML (source) pour la recherche des co-auteurs, le resultat est mis dans le fichier destination (default ${preprocessFile})`)
  18. .action((source, destination = preprocessFile) => {
  19. if (file.exist(source)) {
  20. parse(source, destination);
  21. } else {
  22. console.error(cst.toString(cst.FILE_NOT_FOUND) + ': ' + source);
  23. process.exit(cst.FILE_NOT_FOUND);
  24. }
  25. });
  26. // Parse des arguments CLI
  27. program.parse(process.argv);
  28. const name = (program.name && typeof program.name === 'string') ? program.name : null;
  29. let source = (program.process) ? program.process : program.file;
  30. // Si on est pas en train de preparer le fichier de pre traitement
  31. if (process.argv[2] !== 'prepare') {
  32. // Verification que le fichier du pre-traitement existe
  33. if (!file.exist(source)) {
  34. // Impossible de trouver le fichier XML à traiter
  35. if (program.process) {
  36. console.error(cst.toString(cst.FILE_NOT_FOUND) + ': ' + source);
  37. process.exit(cst.FILE_NOT_FOUND);
  38. }
  39. // Impossible de trouver le fichier resultant du pre-traitement
  40. else {
  41. console.error(cst.toString(cst.PREPROCESS_NOT_FOUND));
  42. process.exit(cst.PREPROCESS_NOT_FOUND);
  43. }
  44. }
  45. // En cas d'absence de nom on le demande
  46. if (name === null) {
  47. inquirer.prompt({
  48. type: 'input',
  49. name: 'name',
  50. message: 'Enter the name of the author whose co-authors you want to search for: >',
  51. }).then(answer => {
  52. // Lancement du prgramme
  53. if (program.process) {
  54. parse(source, preprocessFile);
  55. source = preprocessFile;
  56. }
  57. find(source, answer.name);
  58. });
  59. }
  60. // Sinon on lance le programme
  61. else {
  62. if (program.process) {
  63. parse(source, preprocessFile);
  64. source = preprocessFile;
  65. }
  66. find(source, name);
  67. }
  68. }
  69. /**
  70. * Prepare le document XML pour la recherche des co-auteurs
  71. * @param source Chemin vers le fichier XML
  72. * @param dest Chemin pour créer le fichier avec les données traitées
  73. */
  74. function parse(source, dest) {
  75. //TODO Preparer les données dans un fichier
  76. const parser = require('./src/parser').from(source).to(dest);
  77. parser.parse(parser.write);
  78. }
  79. /**
  80. * Cherche les co-auteurs d'un auteur dans un fichier crée par prepare
  81. * @param source Chemin vers le fichier crée par prepare
  82. * @param name Nom de l'auteur pour la recherche
  83. */
  84. function find(source, name) {
  85. //TODO Chercher les co-auteurs
  86. }