Module Phase2_prerequisites

Phase 2: Prerequisites Verification

type prerequisite_result = {
  1. name : string;
    (*

    Name of the prerequisite being checked

    *)
  2. is_available : bool;
    (*

    Whether the prerequisite is available on the system

    *)
  3. version : string option;
    (*

    Version string if available, None otherwise

    *)
  4. path : string option;
    (*

    Path to the executable if found

    *)
  5. error_message : string option;
    (*

    Error message if prerequisite is not available

    *)
}

Prerequisite check result

type prerequisites_status = {
  1. total_checks : int;
    (*

    Total number of prerequisite checks performed

    *)
  2. passed_checks : int;
    (*

    Number of checks that passed

    *)
  3. failed_checks : int;
    (*

    Number of checks that failed

    *)
  4. results : prerequisite_result list;
    (*

    List of individual check results

    *)
}

Overall prerequisites status

val command_exists : string -> bool

Check if a command exists in PATH

val extract_version : string -> string -> string option

Extract version from command output using pattern matching

val check_rust : unit -> prerequisite_result

Check Rust/Cargo installation

val check_nodejs : unit -> prerequisite_result

Check Node.js installation

val check_postgresql : unit -> prerequisite_result

Check PostgreSQL installation

val check_redis : unit -> prerequisite_result

Check Redis installation (optional)

val check_git : unit -> prerequisite_result

Check Git installation

val check_curl : unit -> prerequisite_result

Check curl installation

val check_all_prerequisites : unit -> prerequisites_status

Check all prerequisites and return status

val display_prerequisites_status : prerequisites_status -> unit

Display prerequisites status with formatted output

val verify_prerequisites : unit -> Types.phase_result

Verify all prerequisites are available