functions/record.js

/**
 * @file Terminal form to ask user about record title, type & tags to create the formated Markdown file.
 * @author Guillaume Brioudes
 * @copyright MIT License ANR HyperOtlet
 */

const config = require('./verifconfig').config
    , readline = require('readline');

config.record_types_list = Object.keys(config.record_types);

// activate terminal questionnaire
const rl = readline.createInterface({ input: process.stdin, output: process.stdout });

(async () => {
    let metas = {};

    // questions :
    
    try {
        metas.title = await new Promise((resolve, reject) => {
            rl.question('title (obligatory) ? ', (answer) => {
                if (answer === '') {
                    reject('Title is obligatory'); }

                resolve(answer);
            })
        })
    
        metas.type = await new Promise((resolve, reject) => {
            rl.question('type (default = undefined) ? ', (answer) => {
                if (answer === '') { answer = 'undefined'; }
                if (!config.record_types_list.includes(answer) && answer !== 'undefined') {
                    reject('Unknown type. Add it to config.yml beforehand.'); }

                resolve(answer);
            })
        })
    
        metas.tags = await new Promise((resolve, reject) => {
            rl.question('tags (facultative, between comas, no space) ? ', (answer) => { resolve(answer); })
        })
    
        require('./autorecord').genMdFile(metas.title, metas.type, metas.tags);
    } catch(err) {
        console.error('\x1b[31m', 'Err.', '\x1b[0m', err);
    }
    
    rl.close()
})()