lin-cli 0.2.1

A fast CLI for Linear
use anyhow::Result;

use crate::api::client::LinearClient;
use crate::api::queries::*;
use crate::api::types::*;
use crate::output;

pub async fn list(client: &LinearClient) -> Result<()> {
    let data: UsersData = client.execute(USERS_QUERY, None).await?;

    let users = data.users.nodes;
    output::print_header(&format!("Users ({})", users.len()));

    let headers = &["Name", "Display Name", "Email"];
    let rows: Vec<Vec<String>> = users
        .iter()
        .map(|u| {
            vec![
                u.name.clone(),
                u.display_name.clone().unwrap_or_default(),
                u.email.clone().unwrap_or_default(),
            ]
        })
        .collect();

    output::print_table(headers, &rows);
    Ok(())
}