@topgroup/diginext
Version:
A BUILD SERVER & CLI to deploy apps to any Kubernetes clusters.
139 lines (138 loc) • 5.55 kB
JavaScript
;
var __createBinding = (this && this.__createBinding) || (Object.create ? (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
var desc = Object.getOwnPropertyDescriptor(m, k);
if (!desc || ("get" in desc ? !m.__esModule : desc.writable || desc.configurable)) {
desc = { enumerable: true, get: function() { return m[k]; } };
}
Object.defineProperty(o, k2, desc);
}) : (function(o, m, k, k2) {
if (k2 === undefined) k2 = k;
o[k2] = m[k];
}));
var __setModuleDefault = (this && this.__setModuleDefault) || (Object.create ? (function(o, v) {
Object.defineProperty(o, "default", { enumerable: true, value: v });
}) : function(o, v) {
o["default"] = v;
});
var __importStar = (this && this.__importStar) || function (mod) {
if (mod && mod.__esModule) return mod;
var result = {};
if (mod != null) for (var k in mod) if (k !== "default" && Object.prototype.hasOwnProperty.call(mod, k)) __createBinding(result, mod, k);
__setModuleDefault(result, mod);
return result;
};
var __importDefault = (this && this.__importDefault) || function (mod) {
return (mod && mod.__esModule) ? mod : { "default": mod };
};
Object.defineProperty(exports, "__esModule", { value: true });
exports.addContainerRegistry = void 0;
const log_1 = require("diginext-utils/dist/xconsole/log");
const inquirer_1 = __importDefault(require("inquirer"));
const SystemTypes_1 = require("../../interfaces/SystemTypes");
const connect_registry_1 = require("./connect-registry");
const addContainerRegistry = async (data, options) => {
if (!data.provider) {
const { provider } = await inquirer_1.default.prompt({
name: "provider",
type: "list",
message: "Select provider:",
default: SystemTypes_1.registryProviderList[0],
choices: SystemTypes_1.registryProviderList.map((name, i) => {
return { name: `[${i + 1}] ${name}`, value: name };
}),
});
data.provider = provider;
}
if (!data.name) {
const { value } = await inquirer_1.default.prompt({
name: "value",
type: "input",
message: "Name:",
});
data.name = value;
}
// Input organization or confirm to use default:
const { organization } = await inquirer_1.default.prompt({
name: "organization",
type: "input",
message: "Organization:",
default: data.organization,
});
data.organization = organization;
switch (data.provider) {
case "gcloud":
if (!data.host) {
const { value } = await inquirer_1.default.prompt({
name: "value",
type: "editor",
message: "Registry host:",
default: "gcr.io",
});
data.host = value;
}
if (!data.imageBaseURL)
data.imageBaseURL = `${data.host}/${data.organization}`;
// ask serviceAccount
if (!data.serviceAccount) {
const { value } = await inquirer_1.default.prompt({
name: "value",
type: "editor",
message: "Google Service Account:",
});
data.serviceAccount = value;
}
break;
case "digitalocean":
if (!data.host)
data.host = "registry.digitalocean.com";
if (!data.imageBaseURL)
data.imageBaseURL = `${data.host}/${data.organization}`;
// ask api access token
if (!data.apiAccessToken) {
const { value } = await inquirer_1.default.prompt({
name: "value",
type: "password",
message: "Digital Ocean API_ACCESS_TOKEN:",
});
data.apiAccessToken = value;
}
break;
case "dockerhub":
data.dockerServer = "https://index.docker.io/v2/";
if (!data.host)
data.host = "docker.io";
if (!data.imageBaseURL)
data.imageBaseURL = `${data.host}/${data.organization}`;
// ask login credentials
if (!data.dockerUsername) {
const { value } = await inquirer_1.default.prompt({
name: "value",
type: "input",
message: "Docker username:",
});
data.dockerUsername = value;
}
if (!data.dockerPassword) {
const { value } = await inquirer_1.default.prompt({
name: "value",
type: "password",
message: "Docker password:",
});
data.dockerPassword = value;
}
break;
default:
return (0, log_1.logError)(`Container registry provider "${data.provider}" is not valid.`);
}
const { DB } = await Promise.resolve().then(() => __importStar(require("../../modules/api/DB")));
const registry = await DB.create("registry", data);
if (registry) {
await (0, connect_registry_1.connectRegistry)(registry, { userId: options.ownerId, workspaceId: options.workspaceId });
}
else {
(0, log_1.logWarn)(`Added container registry "${data.name}" but failed to connect.`);
}
return registry;
};
exports.addContainerRegistry = addContainerRegistry;