wash-lib 0.18.0

wasmCloud Shell (wash) libraries
Documentation
use std::time::Duration;

use tokio::join;
use tokio::net::{lookup_host, TcpStream};
use tokio::time::timeout;

async fn record_reachability(host: &str) {
    let Ok(Ok(addrs)) = timeout(Duration::from_secs(1), lookup_host(format!("{host}:443"))).await
    else {
        return;
    };
    for addr in addrs {
        if matches!(
            timeout(Duration::from_millis(500), TcpStream::connect(addr)).await,
            Ok(Ok(_))
        ) {
            println!("cargo:rustc-cfg=can_reach_{}", host.replace('.', "_"));
            return;
        }
    }
}

#[tokio::main]
async fn main() {
    join!(
        record_reachability("github.com"),
        record_reachability("raw.githubusercontent.com"),
    );
}