# All files / src/systemTools prompt.js

84.34% Statements 70/83
58.82% Branches 30/51
100% Functions 6/6
93.22% Lines 55/59

Press n or j to go to the next uncovered block, b, p or k for the previous block.

    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    783x
    3x
    3x
    3x

    3x

    16x
    8x
    8x

    8x

    36x
    36x
    36x
    36x
    36x
    36x
    36x

    36x
    36x
    36x
    31x
    465x
    465x
    465x
    465x

    5x
    5x
    6x
    6x
    6x
    6x
    6x
    6x
    6x

    36x
    36x
    36x
    36x
    36x
    36x
    3x

    3x
    2862x
    2862x
    2862x
    2858x
    2858x

    4x
    4x

    2862x
    2862x
    2052x
    810x
    806x

    2862x

    465x
     import chalk from 'chalk';
    import inquirer from 'inquirer';
    import { logWarning, logTask, rnvStatus, logEnd, logToSummary } from './logger';
    import Config from '../config';

    const highlight = chalk.grey.bold;

    export const inquirerPrompt = async (params) => {
        const c = Config.getConfig();
        const msg = params.logMessage || params.warningMessage;
        if (c.program.ci) {
            throw msg || '--ci option does not allow prompts';
        }
        if (msg && params.logMessage) logTask(msg, chalk.grey);
        if (msg && params.warningMessage) logWarning(msg);
        const result = await inquirer.prompt(params);
        return result;
    };

    export const generateOptions = (inputData, isMultiChoice = false, mapping, renderMethod) => {
        let asString = '';
        const valuesAsObject = {};
        const valuesAsArray = [];
        const keysAsObject = {};
        const keysAsArray = [];
        const isArray = Array.isArray(inputData);

        const output = {};
        const renderer = renderMethod || _generateOptionString;
        if (isArray) {
            inputData.map((v, i) => {
                asString += renderer(i, v, mapping, v);
                valuesAsArray.push(v);
          E      if (!mapping) keysAsArray.push(v);
          E      if (!mapping) valuesAsObject[v] = v;
            });
        } else {
            let i = 0;
            for (const k in inputData) {
                const v = inputData[k];
                asString += renderer(i, v, mapping, k);
                keysAsArray.push(k);
                keysAsObject[k] = true;
                valuesAsObject[k] = v;
                valuesAsArray.push(v);
                i++;
            }
        }
        output.keysAsArray = keysAsArray.sort(_sort);
        output.valuesAsArray = valuesAsArray.sort(_sort);
        output.keysAsObject = keysAsObject;
        output.valuesAsObject = valuesAsObject;
        output.asString = asString;
        return output;
    };

    const _sort = (a, b) => {
        let aStr = '';
        let bStr = '';
        if (typeof a === 'string') {
            aStr = a.toLowerCase();
            bStr = b.toLowerCase();
        } else {
        I    if (a && a.name) aStr = a.name.toLowerCase();
        I    if (b && b.name) bStr = b.name.toLowerCase();
        }

        let com = 0;
        if (aStr > bStr) {
            com = 1;
        } else if (aStr < bStr) {
            com = -1;
        }
        return com;
    };

    const _generateOptionString = (i, obj, mapping, defaultVal) => ` [${highlight(i + 1)}]> ${highlight(mapping ? '' : defaultVal)} \n`;