Skip to main content

deslicer_cli/commands/auth/
login.rs

1use clap::Args as ClapArgs;
2use serde_json::json;
3
4use crate::commands::pipeline::{authenticate, map_cli_error};
5use crate::Ctx;
6
7#[derive(ClapArgs)]
8pub struct Args {
9    #[arg(long)]
10    pub environment: Option<String>,
11}
12
13pub async fn run(ctx: Ctx, args: Args) -> i32 {
14    match authenticate(&ctx, args.environment.as_deref(), None).await {
15        Ok((session, _client)) => {
16            let output = json!({
17                "platform": session.platform.header_value(),
18                "observer_api_url": session.backend.observer_api_url.as_str(),
19                "resolution_path": session.backend.resolution_path,
20                "audience": session.backend.audience,
21            });
22            let text = match serde_json::to_string_pretty(&output) {
23                Ok(s) => s,
24                Err(_) => output.to_string(),
25            };
26            println!("{text}");
27            0
28        }
29        Err(err) => map_cli_error(err),
30    }
31}