AutolabJS/autolabcli

View on GitHub
lib/cli/input/prefsprompt.js

Summary

Maintainability
A
2 hrs
Test Coverage
const inquirer = require('inquirer');
const path = require('path');
const fs = require('fs');
 
const PromptGenerator = require('../../utils/PromptGenerator');
 
const defaultPrefPath = path.join(__dirname, '../../../default-prefs.json');
const defaultPrefs = JSON.parse(fs.readFileSync(defaultPrefPath, 'utf8'));
 
const { supportedLanguages } = defaultPrefs;
 
const changeLangPrompt = async () => {
const langPromptGenerator = new PromptGenerator();
langPromptGenerator.addProperty('name', 'lang');
langPromptGenerator.addProperty('type', 'list');
langPromptGenerator.addProperty('message', 'Choose your preferred language:');
langPromptGenerator.addProperty('choices', supportedLanguages);
 
const newLang = await inquirer.prompt(langPromptGenerator.getPrompt());
return {
name: 'lang_changed',
details: {
lang: newLang.lang,
},
};
};
 
const getPromptGenerator = (name, type, message, validate) => {
const promptGenerator = new PromptGenerator();
promptGenerator.addProperty('name', name);
promptGenerator.addProperty('type', type);
promptGenerator.addProperty('message', message);
promptGenerator.addProperty('validate', validate);
return promptGenerator;
};
 
const getTypePromptGenerator = (name, type, message, validate, choices) => {
const promptGenerator = getPromptGenerator(name, type, message, validate);
promptGenerator.addProperty('choices', choices);
return promptGenerator;
};
 
const getHostPrompt = () => {
const hostPromptGenerator = getPromptGenerator('host', 'input', 'Enter the host:');
return hostPromptGenerator.getPrompt();
};
 
const getPortPrompt = () => {
const portPromptGenerator = getPromptGenerator('port', 'input', 'Enter the port:');
return portPromptGenerator.getPrompt();
};
 
const getServerTypePrompt = () => {
const typePromptGenerator = getTypePromptGenerator('type', 'list', 'Choose the server type:', undefined, ['gitlab', 'ms']);
return typePromptGenerator.getPrompt();
};
 
const getLoggerPreferncePrompt = () => {
const typePromptGenerator = getTypePromptGenerator(
'type',
'list',
'Choose the logger preference to update:',
undefined,
['maxsize', 'blacklist'],
);
return typePromptGenerator.getPrompt();
};
 
const changeMainServerPrompt = async () => {
const prompts = [
getHostPrompt(),
getPortPrompt(),
];
const serverPrefs = await inquirer.prompt(prompts);
return {
name: 'server_changed',
details: {
host: serverPrefs.host,
port: serverPrefs.port,
type: 'ms',
},
};
};
 
const changeGitlabPrompt = async () => {
const prompts = [
getHostPrompt(),
];
const serverPrefs = await inquirer.prompt(prompts);
return {
name: 'server_changed',
details: {
host: serverPrefs.host,
type: 'gitlab',
},
};
};
 
Similar blocks of code found in 2 locations. Consider refactoring.
const changeMaxSize = async () => {
const sizePromptGenrator = getPromptGenerator('maxsize', 'input', 'Enter the maximum size of the logger file:');
const sizePrefs = await inquirer.prompt(sizePromptGenrator.getPrompt());
 
return {
name: 'logger_pref_changed',
details: {
maxSize: sizePrefs.maxsize,
},
};
};
 
Similar blocks of code found in 2 locations. Consider refactoring.
const changeBlacklist = async () => {
const blacklistPromptGenrator = getPromptGenerator('keyword', 'input', 'Enter the keyword to be added to logger blacklist:');
const blacklistPrefs = await inquirer.prompt(blacklistPromptGenrator.getPrompt());
 
return {
name: 'logger_pref_changed',
details: {
keyword: blacklistPrefs.keyword,
},
};
};
 
const changeLoggerPrompt = async () => {
const loggerPrompt = getLoggerPreferncePrompt();
const { type } = (await inquirer.prompt(loggerPrompt));
 
let ret;
if (type === 'maxsize') {
ret = changeMaxSize();
} if (type === 'blacklist') {
ret = changeBlacklist();
}
return ret;
};
 
module.exports = {
changeLangPrompt,
changeMainServerPrompt,
changeGitlabPrompt,
getServerTypePrompt,
changeLoggerPrompt,
};