Skip to main content

omnia_sdk/
lib.rs

1#![doc = include_str!("../README.md")]
2#![forbid(unsafe_code)]
3
4pub mod api;
5mod capabilities;
6mod error;
7
8/// JSON document store types and helpers (from `omnia-wasi-jsondb`).
9pub mod document_store {
10    pub use omnia_wasi_jsondb::document_store::*;
11}
12
13#[cfg(target_arch = "wasm32")]
14pub use omnia_guest_macro::*;
15#[doc(hidden)]
16pub use {anyhow, axum, bytes, http, http_body, tracing};
17#[cfg(target_arch = "wasm32")]
18#[doc(hidden)]
19pub use {
20    omnia_wasi_blobstore, omnia_wasi_http, omnia_wasi_identity, omnia_wasi_keyvalue,
21    omnia_wasi_messaging, omnia_wasi_otel, wasip3, wit_bindgen,
22};
23
24pub use crate::api::*;
25pub use crate::capabilities::*;
26pub use crate::error::*;
27
28/// Checks required environment variables are set, panicking if any are
29/// missing.
30///
31/// # Example
32/// ```rust,ignore
33/// omnia_sdk::ensure_env!("API_KEY", "SOME_URL");
34/// ```
35#[macro_export]
36macro_rules! ensure_env {
37    ($($var:literal),+ $(,)?) => {
38        {
39            let mut missing = Vec::new();
40            $(
41                if std::env::var($var).is_err() {
42                    missing.push($var);
43                }
44            )+
45
46            if !missing.is_empty() {
47                panic!("Missing required environment variables: {}", missing.join(", "));
48            }
49        }
50    };
51}