@onereach/orest-input-cli
Version:
The tool for creating, serving, and publishing OREST Inputs
75 lines (57 loc) • 1.84 kB
JavaScript
const isObject = require('lodash/isObject');
const { readConfig, writeConfig } = require('../util/config');
const getVars = require('./getVars');
async function getProfiles() {
const config = await readConfig();
if (config) {
return Object.keys(config).reduce((acc, key) => {
if (isObject(config[key])) {
return { ...acc, [key]: config[key] };
}
return acc;
}, {});
} else {
return false;
}
}
async function setProfiles(profiles) {
return writeConfig(profiles);
}
async function addProfile(profileName = 'default') {
const profiles = (await getProfiles()) || {};
if (profiles[profileName]) {
console.log(`The "${profileName}" profile already exists.`);
return;
}
const profile = await getVars();
await setProfiles({ ...profiles, [profileName]: profile });
console.log(`Added the "${profileName}" profile.`);
}
async function removeProfile(profileName = 'default') {
const profiles = (await getProfiles()) || {};
if (!profiles[profileName]) {
console.log(`The "${profileName}" profile does not exist.`);
return;
}
delete profiles[profileName];
await setProfiles(profiles);
console.log(`Deleted the "${profileName}" profile.`);
}
async function listProfiles() {
const profiles = (await getProfiles()) || {};
Object.keys(profiles).forEach(profileName => {
console.log(`${profileName}:`);
Object.keys(profiles[profileName]).forEach(key => {
if (key === 'password') {
console.log(` ${key}: ***`);
} else {
console.log(` ${key}: ${profiles[profileName][key]}`);
}
});
});
}
module.exports.getProfiles = getProfiles;
module.exports.setProfiles = setProfiles;
module.exports.addProfile = addProfile;
module.exports.removeProfile = removeProfile;
module.exports.listProfiles = listProfiles;