#!/usr/bin/env node

// Imports
const program = require('commander');
const inquirer = require('inquirer');
const file = require('./src/file');
const cst = require('./src/constant');
const timer = require('./src/timer');

// Variables configs et globales
let sourceFile = './data/dblp.xml';
let verbose = false;

// 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', sourceFile)
    .option('-v, --verbose', 'Affiche plus d\'informations', verbose);

// Parse des arguments CLI
program.parse(process.argv);
const name = (program.name && typeof program.name === 'string') ? program.name : null;
let source = program.file;
verbose = program.verbose;

// Verification que le fichier du pre-traitement existe
if (!file.exist(source)) {
    // Impossible de trouver le fichier XML à traiter
    console.error(cst.toString(cst.FILE_NOT_FOUND) + ': ' + source);
    process.exit(cst.FILE_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 information you want to extract: >',
    }).then(answer => {
        // Lancement du prgramme
        extract(source, answer.name);
    });
}
// Sinon on lance le programme
else {
    extract(source, name);
}

function extract(source, name) {
    name = name.trim();
    if (verbose) {
        console.info(`Extraction of ${name}'s information...`);
        timer.start();
    }
    //TODO Extraction
    if (verbose) {
        timer.stop();
        console.info(`Information about ${name} extracted in ${timer.time()}`);
    }
}