UNPKG

@pagopa/dx-cli

Version:

A CLI useful to manage DX tools.

58 lines (57 loc) 1.81 kB
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; }