@pagopa/dx-cli
Version:
A CLI useful to manage DX tools.
58 lines (57 loc) • 1.81 kB
JavaScript
import { z } from "zod/v4";
import { cloudAccountSchema, } from "./cloud-account.js";
export const environmentShort = {
dev: "d",
prod: "p",
uat: "u",
};
export const environmentSchema = z.object({
cloudAccounts: z.array(cloudAccountSchema).min(1),
name: z.enum(["dev", "prod", "uat"]),
prefix: z.string().min(2).max(4),
});
export async function getInitializationStatus(cloudAccountService, environment) {
const issues = [];
for (const cloudAccount of environment.cloudAccounts) {
const initialized = await cloudAccountService.isInitialized(cloudAccount.id, environment);
if (!initialized) {
issues.push({
cloudAccount,
type: "CLOUD_ACCOUNT_NOT_INITIALIZED",
});
}
}
const terraformBackend = await getTerraformBackend(cloudAccountService, environment);
if (!terraformBackend) {
issues.push({
type: "MISSING_REMOTE_BACKEND",
});
}
if (issues.length > 0) {
return {
initialized: false,
issues,
};
}
return {
initialized: true,
};
}
export async function getTerraformBackend(cloudAccountService, environment) {
for (const cloudAccount of environment.cloudAccounts) {
const backend = await cloudAccountService.getTerraformBackend(cloudAccount.id, environment);
if (backend) {
return backend;
}
}
return undefined;
}
export async function hasUserPermissionToInitialize(cloudAccountService, environment) {
for (const cloudAccount of environment.cloudAccounts) {
const result = await cloudAccountService.hasUserPermissionToInitialize(cloudAccount.id);
if (!result) {
return false;
}
}
return true;
}