PreflightMessages.java
package com.cloudforge.core.local;
/**
* Formats preflight outcomes for CLI and exception messages.
*/
public final class PreflightMessages {
private PreflightMessages() {
}
public static String formatBlocked(PreflightResult result) {
String target = result.target() == DeploymentTarget.MINISTACK ? "MiniStack" : "LocalStack";
StringBuilder sb = new StringBuilder();
sb.append(target).append(" deployment blocked (preflight):\n");
for (PreflightViolation violation : result.blockingViolations()) {
sb.append(" • [").append(violation.ruleId()).append("] ")
.append(violation.message());
if (violation.suggestion() != null && !violation.suggestion().isBlank()) {
sb.append("\n → ").append(violation.suggestion());
}
sb.append('\n');
}
sb.append("Override: ")
.append(envKey(result.target()))
.append("=warn|off");
return sb.toString().trim();
}
public static String formatWarnings(PreflightResult result) {
if (result.warnings().isEmpty()) {
return "";
}
String target = result.target() == DeploymentTarget.MINISTACK ? "MiniStack" : "LocalStack";
StringBuilder sb = new StringBuilder();
sb.append(target).append(" preflight warnings:\n");
for (PreflightViolation violation : result.warnings()) {
sb.append(" • [").append(violation.ruleId()).append("] ")
.append(violation.message());
if (violation.suggestion() != null && !violation.suggestion().isBlank()) {
sb.append("\n → ").append(violation.suggestion());
}
sb.append('\n');
}
return sb.toString().trim();
}
public static String envKey(DeploymentTarget target) {
return target == DeploymentTarget.MINISTACK
? "MINISTACK_PREFLIGHT"
: "LOCALSTACK_PREFLIGHT";
}
}