use anyhow::Result;
use crate::api::client::LinearClient;
use crate::api::queries::VIEWER_QUERY;
use crate::api::types::ViewerData;
use crate::auth;
use crate::config::Config;
use crate::output;
pub async fn run(token: &str, workspace_name: &str) -> Result<()> {
let client = LinearClient::new(token);
let viewer: ViewerData = client.execute(VIEWER_QUERY, None).await?;
auth::store_token(workspace_name, token)?;
let mut config = Config::load()?;
if config.default_workspace.is_none() {
config.default_workspace = Some(workspace_name.to_string());
config.save()?;
}
output::print_success(&format!(
"Authenticated as {} ({})",
viewer.viewer.name,
viewer.viewer.email.as_deref().unwrap_or("no email")
));
output::print_success(&format!("Token stored for workspace '{workspace_name}'"));
Ok(())
}