intreface.cli
Version:
Intreface Dev Tools
61 lines (60 loc) • 2.22 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
const command_1 = require("@oclif/command");
const notifier = require("node-notifier");
const inquirer = require("inquirer");
const system_1 = require("../@utility/system");
const chalk_1 = require("chalk");
const camelcase = require("camelcase");
const decamelize = require("decamelize");
const objectPath = require("object-path");
const path = require("path");
const questions_1 = require("../@utility/questions");
const questionMap = {
// Directory
directoryServer: questions_1.directoryServer,
directoryRepository: questions_1.directoryRepository,
directoryBitrix: questions_1.directoryBitrix,
// MySQL
mysqlLogin: questions_1.mysqlLogin,
mysqlPassword: questions_1.mysqlPassword,
// Git
gitLogin: questions_1.gitLogin,
gitPassword: questions_1.gitPassword
};
class Init extends command_1.Command {
async run() {
const { flags } = this.parse(Init);
let questions = Object.values(questionMap);
if (flags.config) {
let question = questionMap[camelcase(flags.config)];
if (question) {
questions = [question];
}
else {
this.error(`${chalk_1.default.red('💩')} config option "${flags.config}" ${chalk_1.default.red.underline('Does Not Exist')}.`);
}
}
let responses = await inquirer.prompt(questions);
let config = objectPath({});
for (let k in responses) {
config.set(decamelize(k).replace(/\_/g, '.'), responses[k]);
}
system_1.writeConfig(config.get(''));
console.log(chalk_1.default.green('Config has been saved.'));
notifier.notify({
icon: path.join(__dirname, './../@assets/images/logo.png'),
title: 'Intreface CLI',
message: 'Config has been saved. 😎'
});
}
}
exports.default = Init;
Init.description = 'Initialize intreface.cli Config';
Init.examples = [
`$ intreface init`,
`$ intreface init --config=mysql-login`,
];
Init.flags = {
config: command_1.flags.string(),
};