Phase2_prerequisitesPhase 2: Prerequisites Verification
type prerequisite_result = {name : string;Name of the prerequisite being checked
*)is_available : bool;Whether the prerequisite is available on the system
*)version : string option;Version string if available, None otherwise
*)path : string option;Path to the executable if found
*)error_message : string option;Error message if prerequisite is not available
*)}Prerequisite check result
type prerequisites_status = {total_checks : int;Total number of prerequisite checks performed
*)passed_checks : int;Number of checks that passed
*)failed_checks : int;Number of checks that failed
*)results : prerequisite_result list;List of individual check results
*)}Overall prerequisites status
Extract version from command output using pattern matching
val check_rust : unit -> prerequisite_resultCheck Rust/Cargo installation
val check_nodejs : unit -> prerequisite_resultCheck Node.js installation
val check_postgresql : unit -> prerequisite_resultCheck PostgreSQL installation
val check_redis : unit -> prerequisite_resultCheck Redis installation (optional)
val check_git : unit -> prerequisite_resultCheck Git installation
val check_curl : unit -> prerequisite_resultCheck curl installation
val check_all_prerequisites : unit -> prerequisites_statusCheck all prerequisites and return status
val display_prerequisites_status : prerequisites_status -> unitDisplay prerequisites status with formatted output
val verify_prerequisites : unit -> Types.phase_resultVerify all prerequisites are available