UNPKG

@chimoney.io/iaas-k8s-deployment

Version:

Kubernetes Infrastructure as a Service deployment package for streamlined multi-cloud environments

84 lines (76 loc) 2.4 kB
import type { DeploymentConfig, FieldValidationError, } from "../../types/index.js"; // ============================================================================= // Configuration Validation // ============================================================================= export function validateDeploymentConfig( config: DeploymentConfig ): FieldValidationError[] { const errors: FieldValidationError[] = []; // Validate stack name if (!config.stackName || typeof config.stackName !== "string") { errors.push({ field: "stackName", message: "Stack name is required and must be a non-empty string", value: config.stackName, }); } else if (!/^[a-zA-Z0-9-_]+$/.test(config.stackName)) { errors.push({ field: "stackName", message: "Stack name can only contain alphanumeric characters, hyphens, and underscores", value: config.stackName, }); } // Validate company name if (!config.companyName || typeof config.companyName !== "string") { errors.push({ field: "companyName", message: "Company name is required and must be a non-empty string", value: config.companyName, }); } else if (!/^[a-zA-Z0-9-_]+$/.test(config.companyName)) { errors.push({ field: "companyName", message: "Company name can only contain alphanumeric characters, hyphens, and underscores", value: config.companyName, }); } // Validate secrets JSON if (!config.secretsJson) { errors.push({ field: "secretsJson", message: "Secrets JSON is required", value: config.secretsJson, }); } else { try { const parsed = JSON.parse(config.secretsJson); if (typeof parsed !== "object" || parsed === null) { errors.push({ field: "secretsJson", message: "Secrets JSON must be a valid JSON object", value: config.secretsJson, }); } } catch (error) { errors.push({ field: "secretsJson", message: "Secrets JSON must be valid JSON", value: config.secretsJson, }); } } // Validate Helm chart path if provided if (config.helmChartPath && typeof config.helmChartPath !== "string") { errors.push({ field: "helmChartPath", message: "Helm chart path must be a string", value: config.helmChartPath, }); } return errors; }