1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495 |
- #!/usr/bin/env node
- // Imports
- const program = require('commander');
- const inquirer = require('inquirer');
- const file = require('./src/file');
- const cst = require('./src/constant');
- // Variables configs et globales
- let preprocessFile = './data/preprocess.ppf';
- // Parametrage CLI
- program.version('0.0.1');
- program
- .option('-n, --name <string>', 'Nom de l\'auteur dont il faut chercher les co-auteurs')
- .option('-f, --file <source>', 'Chemin vers le fichier à utiliser pour la recherche des co-auteurs', preprocessFile)
- .option('-p, --process <source>', 'Prepare le fichier source et effectue la recherche des co-auteurs');
- program
- .command('prepare <source> [destination]')
- .description(`Prepare un fichier XML (source) pour la recherche des co-auteurs, le resultat est mis dans le fichier destination (default ${preprocessFile})`)
- .action((source, destination = preprocessFile) => {
- if (file.exist(source)) {
- parse(source, destination);
- } else {
- console.error(cst.toString(cst.FILE_NOT_FOUND) + ': ' + source);
- process.exit(cst.FILE_NOT_FOUND);
- }
- });
- // Parse des arguments CLI
- program.parse(process.argv);
- const name = (program.name && typeof program.name === 'string') ? program.name : null;
- let source = (program.process) ? program.process : program.file;
- // Si on est pas en train de preparer le fichier de pre traitement
- if (process.argv[2] !== 'prepare') {
- // Verification que le fichier du pre-traitement existe
- if (!file.exist(source)) {
- // Impossible de trouver le fichier XML à traiter
- if (program.process) {
- console.error(cst.toString(cst.FILE_NOT_FOUND) + ': ' + source);
- process.exit(cst.FILE_NOT_FOUND);
- }
- // Impossible de trouver le fichier resultant du pre-traitement
- else {
- console.error(cst.toString(cst.PREPROCESS_NOT_FOUND));
- process.exit(cst.PREPROCESS_NOT_FOUND);
- }
- }
- // En cas d'absence de nom on le demande
- if (name === null) {
- inquirer.prompt({
- type: 'input',
- name: 'name',
- message: 'Enter the name of the author whose co-authors you want to search for: >',
- }).then(answer => {
- // Lancement du prgramme
- if (program.process) {
- parse(source, preprocessFile);
- source = preprocessFile;
- }
- find(source, answer.name);
- });
- }
- // Sinon on lance le programme
- else {
- if (program.process) {
- parse(source, preprocessFile);
- source = preprocessFile;
- }
- find(source, name);
- }
- }
- /**
- * Prepare le document XML pour la recherche des co-auteurs
- * @param source Chemin vers le fichier XML
- * @param dest Chemin pour créer le fichier avec les données traitées
- */
- function parse(source, dest) {
- //TODO Preparer les données dans un fichier
- const parser = require('./src/parser').from(source).to(dest);
- parser.parse(parser.write);
- }
- /**
- * Cherche les co-auteurs d'un auteur dans un fichier crée par prepare
- * @param source Chemin vers le fichier crée par prepare
- * @param name Nom de l'auteur pour la recherche
- */
- function find(source, name) {
- //TODO Chercher les co-auteurs
- }
|