128 lines
4.2 KiB
TypeScript
128 lines
4.2 KiB
TypeScript
export type SetupFailureCode =
|
|
| "unsupported_host"
|
|
| "download_failed"
|
|
| "integrity_mismatch"
|
|
| "authorization_or_package_manager_failed"
|
|
| "launcher_missing"
|
|
| "runtime_dependency_unavailable"
|
|
| "unsupported_hopper_build"
|
|
| "setup_cancelled"
|
|
| "destination_exists"
|
|
| "mount_failed"
|
|
| "bundle_invalid"
|
|
| "copy_failed";
|
|
|
|
export type SetupHopperInstallResult =
|
|
| { readonly status: "installed"; readonly launcherPath: string }
|
|
| {
|
|
readonly status: "failed";
|
|
readonly code: SetupFailureCode;
|
|
readonly remediation: string;
|
|
};
|
|
|
|
export type HopperInstallFailureReason =
|
|
| "unsupported_host"
|
|
| "release_metadata"
|
|
| "download"
|
|
| "integrity"
|
|
| "authorization_or_package_manager"
|
|
| "launcher_missing"
|
|
| "runtime_dependencies"
|
|
| "unsupported_hopper_build"
|
|
| "cancelled"
|
|
| "destination_exists"
|
|
| "mount"
|
|
| "bundle"
|
|
| "copy";
|
|
|
|
/** Map provider installer failures to stable setup codes and safe recovery. */
|
|
export const setupInstallFailure = (
|
|
reason: HopperInstallFailureReason,
|
|
): SetupHopperInstallResult => {
|
|
switch (reason) {
|
|
case "unsupported_host":
|
|
return {
|
|
status: "failed",
|
|
code: "unsupported_host",
|
|
remediation: "Use a supported host, then rerun rea setup.",
|
|
};
|
|
case "integrity":
|
|
return {
|
|
status: "failed",
|
|
code: "integrity_mismatch",
|
|
remediation:
|
|
"The Hopper download failed integrity verification. Retry setup; if it repeats, update REA before installing.",
|
|
};
|
|
case "authorization_or_package_manager":
|
|
return {
|
|
status: "failed",
|
|
code: "authorization_or_package_manager_failed",
|
|
remediation:
|
|
"Allow the system package-manager operation or install the planned Hopper package and Linux runtime dependencies, then rerun rea setup.",
|
|
};
|
|
case "launcher_missing":
|
|
return {
|
|
status: "failed",
|
|
code: "launcher_missing",
|
|
remediation:
|
|
"The package operation completed but Hopper is not runnable. Run rea doctor and repair the reported launcher issue.",
|
|
};
|
|
case "runtime_dependencies":
|
|
return {
|
|
status: "failed",
|
|
code: "runtime_dependency_unavailable",
|
|
remediation:
|
|
"Hopper was installed but required shared libraries are missing. Rerun rea setup, then apply the hopper-demo-runtime remediation from rea doctor.",
|
|
};
|
|
case "unsupported_hopper_build":
|
|
return {
|
|
status: "failed",
|
|
code: "unsupported_hopper_build",
|
|
remediation:
|
|
"The installed Hopper launcher does not match the build supported by this REA release. Unset HOPPER_LAUNCHER_PATH, reinstall through rea setup, or update REA.",
|
|
};
|
|
case "cancelled":
|
|
return {
|
|
status: "failed",
|
|
code: "setup_cancelled",
|
|
remediation:
|
|
"Setup was cancelled before Hopper was installed. Rerun rea setup when ready.",
|
|
};
|
|
case "destination_exists":
|
|
return {
|
|
status: "failed",
|
|
code: "destination_exists",
|
|
remediation:
|
|
"The Hopper installation destination already exists and was not replaced. Reuse the existing installation or move it aside, then rerun rea setup.",
|
|
};
|
|
case "mount":
|
|
return {
|
|
status: "failed",
|
|
code: "mount_failed",
|
|
remediation:
|
|
"The verified Hopper disk image could not be mounted. Eject any stale Hopper image, check local disk access, then rerun rea setup.",
|
|
};
|
|
case "bundle":
|
|
return {
|
|
status: "failed",
|
|
code: "bundle_invalid",
|
|
remediation:
|
|
"The mounted package did not contain the expected Hopper application bundle. Retry setup; if it repeats, update REA before installing.",
|
|
};
|
|
case "copy":
|
|
return {
|
|
status: "failed",
|
|
code: "copy_failed",
|
|
remediation:
|
|
"The verified Hopper application could not be copied to the installation destination. Check destination permissions and free space, then rerun rea setup.",
|
|
};
|
|
default:
|
|
return {
|
|
status: "failed",
|
|
code: "download_failed",
|
|
remediation:
|
|
"REA could not download or unpack the official Hopper package. Check network and filesystem access, then retry setup.",
|
|
};
|
|
}
|
|
};
|