alpine_protocol_sdk/
self_check.rs1use std::env;
2use std::sync::OnceLock;
3
4use tracing::{info, warn};
5
6use crate::environment::detect_environment_issues;
7
8static SELF_CHECK_RUN: OnceLock<()> = OnceLock::new();
9
10pub fn run_sdk_self_check() {
11 if SELF_CHECK_RUN.set(()).is_err() {
12 return;
13 }
14
15 let mut ok = true;
16 if env::var("ALPINE_ATTESTERS_URL").is_ok() {
17 info!("[ALPINE][SELF-CHECK] attesters URL configured");
18 } else {
19 warn!("[ALPINE][SELF-CHECK][WARN] ALPINE_ATTESTERS_URL missing");
20 ok = false;
21 }
22
23 if env::var("ALPINE_ROOT_PUBKEY_B64").is_ok() {
24 info!("[ALPINE][SELF-CHECK] root pubkey configured");
25 } else {
26 warn!("[ALPINE][SELF-CHECK][WARN] ALPINE_ROOT_PUBKEY_B64 missing");
27 ok = false;
28 }
29
30 let issues = detect_environment_issues();
31 if issues.is_empty() {
32 info!("[ALPINE][SELF-CHECK] environment looks supported");
33 } else {
34 let labels = issues
35 .iter()
36 .map(|issue| issue.label())
37 .collect::<Vec<_>>()
38 .join(", ");
39 warn!(
40 "[ALPINE][SELF-CHECK][WARN] environment issues detected: {}",
41 labels
42 );
43 ok = false;
44 }
45
46 if ok {
47 info!("[ALPINE][SELF-CHECK] ready");
48 } else {
49 warn!("[ALPINE][SELF-CHECK][WARN] readiness checks failed");
50 }
51}