az-rs 0.1.0

Azure CLI written in Rust
Documentation
use crate::azidentityext::access_token_credential::AccessTokenCredential;
use crate::client::Client;
use crate::run;
use crate::log::set_global_logger;
use std::fmt::Debug;
use std::path::PathBuf;
use wasm_bindgen::prelude::*;

#[wasm_bindgen]
pub async fn run_cli(args: Vec<String>, token: &str) -> Result<String, JsValue> {
    console_error_panic_hook::set_once();
    set_global_logger();

    let credential = AccessTokenCredential::new(token.to_string()).map_err(jsfy)?;
    let client = Client::new(
        "https://management.azure.com",
        vec!["https://management.azure.com/.default"],
        credential,
        None,
    )
    .map_err(jsfy)?;
    run(PathBuf::new(), &client, args).await.map_err(jsfy)
}

fn jsfy<E>(e: E) -> JsValue
where
    E: Debug,
{
    let es = format!("{e:#?}");
    JsValue::from_str(es.as_str())
}