legend-cli 0.1.4

CLI for Legend Prime
use crate::config::{self, Env};

pub fn open(env: Env, profile_name: &str) -> anyhow::Result<()> {
    let profile = config::load_profile(env, profile_name)
        .ok_or_else(|| anyhow::anyhow!("No profile found. Run: legend-cli login"))?;

    let token = profile
        .query_key
        .ok_or_else(|| anyhow::anyhow!("No token in profile. Run: legend-cli login"))?;

    if !token.starts_with("eyJ") {
        anyhow::bail!(
            "Profile uses a query key, not a JWT. Run `legend-cli login` to get a \
             dashboard-compatible token."
        );
    }

    let url = format!(
        "{}/auth/callback?token={}",
        env.dashboard_url(),
        token
    );

    eprintln!("Opening dashboard...");
    if open::that(&url).is_err() {
        eprintln!("Could not open browser. Visit:\n{}", env.dashboard_url());
    }

    Ok(())
}