@godspeedsystems/godspeed
Version:
Godspeed CLI
229 lines • 7.85 kB
JavaScript
;
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
const inquirer_1 = __importDefault(require("inquirer"));
const axios_1 = __importDefault(require("axios"));
const signale_1 = require("./signale");
const chalk_1 = __importDefault(require("chalk"));
const fetchFrameworkVersionTags = async () => {
let versions = [];
try {
let response = await axios_1.default.get(`${process.env.DOCKER_REGISTRY_TAGS_VERSION_URL}`);
versions = response.data.results.map((version) => ({
name: version.name,
value: version.name,
}));
}
catch (err) {
const error = err;
if (axios_1.default.isAxiosError(error)) {
signale_1.log.fatal(chalk_1.default.red(`Not able to connect docker registry. Please check your internet connection.`));
return versions;
}
}
return versions;
};
const isAWord = (input) => {
if (input.length > 0 && input.split(/(\s+)/).length === 1) {
return true;
}
else {
return chalk_1.default.red(`${chalk_1.default.yellow(input)} is not a valid value. It should be a single word.`);
}
};
const isAPort = (input) => {
const regexExp = /^((6553[0-5])|(655[0-2][0-9])|(65[0-4][0-9]{2})|(6[0-4][0-9]{3})|([1-5][0-9]{4})|([0-5]{0,5})|([0-9]{1,4}))$/gi;
if (regexExp.test(input)) {
return true;
}
else {
return chalk_1.default.red(`${chalk_1.default.yellow(input)} is not a valid port. It should be a number between 0-65535.`);
}
};
exports.default = async (alreadyAnswered, askAnswered = false) => {
const versions = await fetchFrameworkVersionTags();
console.log("\n");
const answers = await inquirer_1.default.prompt([
{
type: "confirm",
name: "mongodb",
message: `Do you want mongoDB as database?`,
default: false,
askAnswered: askAnswered,
},
{
type: "input",
name: "mongodb.dbName",
message: "What do you want to name your MongoDB database?",
default: "godspeed",
when: (answers) => !!answers.mongodb,
askAnswered: askAnswered,
validate: isAWord,
},
{
type: "input",
name: "mongodb.ports[0]",
message: "Please enter the port for MongoDB node[1].",
default: 27017,
when: (answers) => !!answers.mongodb,
askAnswered: askAnswered,
validate: isAPort,
},
{
type: "input",
name: "mongodb.ports[1]",
message: "Please enter the port for MongoDB node[2].",
default: 27018,
when: (answers) => !!answers.mongodb,
askAnswered: askAnswered,
validate: isAPort,
},
{
type: "input",
name: "mongodb.ports[2]",
message: "Please enter the port for MongoDB node[3].",
default: 27019,
when: (answers) => !!answers.mongodb,
askAnswered: askAnswered,
validate: isAPort,
},
{
type: "confirm",
name: "mysql",
message: "Do you want to use Mysql as database?",
default: false,
askAnswered: askAnswered,
},
{
type: "input",
name: "mysql.dbName",
message: "What will be the name of Mysql database?",
default: "godspeed",
when: (answers) => !!answers.mysql,
askAnswered: askAnswered,
validate: isAWord,
},
{
type: "input",
name: "mysql.port",
message: "What will be the port of Mysql database?",
default: 3306,
when: (answers) => !!answers.mysql,
askAnswered: askAnswered,
validate: isAPort,
},
{
type: "confirm",
name: "postgresql",
message: "Do you want to use PostgreSQL as database?",
default: false,
askAnswered: askAnswered,
},
{
type: "input",
name: "postgresql.dbName",
message: "What will be the name of PostgreSQL database?",
default: "godspeed",
when: (answers) => !!answers.postgresql,
askAnswered: askAnswered,
validate: isAWord,
},
{
type: "input",
name: "postgresql.port",
message: "What will be the port of PostgreSQL database?",
default: 5432,
when: (answers) => !!answers.postgresql,
askAnswered: askAnswered,
validate: isAPort,
},
{
type: "confirm",
name: "kafka",
message: "Do you want to use Apache Kafka?",
default: false,
askAnswered: askAnswered,
},
{
type: "input",
name: "kafka.kafkaPort",
message: "Please enter kafka port.",
default: 9092,
when: (answers) => !!answers.kafka,
askAnswered: askAnswered,
validate: isAPort,
},
{
type: "input",
name: "kafka.zookeeperPort",
message: "Please enter zookeeper port.",
default: 2181,
when: (answers) => !!answers.kafka,
askAnswered: askAnswered,
validate: isAPort,
},
{
type: "confirm",
name: "elasticsearch",
message: "Do you want to use elasticgraph?",
default: false,
askAnswered: askAnswered,
},
{
type: "input",
name: "elasticgraph.port",
message: "Please enter elasticgraph port.",
default: 9200,
when: (answers) => !!answers.elasticgraph,
askAnswered: askAnswered,
validate: isAPort,
},
{
type: "confirm",
name: "redis",
message: "Do you want to use Redis as database?",
default: false,
askAnswered: askAnswered,
},
{
type: "input",
name: "redis.dbName",
message: "Please enter Redis database name.",
default: "godspeed",
when: (answers) => !!answers.redis,
askAnswered: askAnswered,
validate: isAWord,
},
{
type: "input",
name: "redis.port",
message: "Please enter the Redis port?",
default: 6379,
when: (answers) => !!answers.redis,
askAnswered: askAnswered,
validate: isAPort,
},
{
type: "input",
name: "servicePort",
message: "Please enter host port on which you want to run your service.",
default: 3000,
askAnswered: askAnswered,
validate: isAPort,
},
{
type: "list",
name: "gsNodeServiceVersion",
message: "Please select gs-node-service(Godspeed Framework) version.",
default: "latest",
choices: versions,
loop: false,
askAnswered: askAnswered,
},
], alreadyAnswered);
console.log("\n");
return answers;
};
//# sourceMappingURL=interactiveMode.js.map