//! `pic projects` — read-only view of §7 multi-repo ownership projects.
//!
//! A project is the repo-root that declaratively owns a slice of the group
//! tree. Ownership is CLAIMED by `pic apply` (first apply with a `[project]`
//! slug registers it); this command only lists what exists.

use anyhow::Result;

use crate::client::Client;
use crate::config;
use crate::output::{OutputMode, Table};

/// `pic projects ls` — every project + how many group nodes it owns.
pub async fn ls(mode: OutputMode) -> Result<()> {
    let creds = config::resolve()?;
    let client = Client::from_creds(&creds)?;
    let projects = client.projects_list().await?;
    let mut table = Table::new(["slug", "name", "owned_groups", "created_at"]);
    for p in &projects {
        table.row([
            p.slug.clone(),
            p.name.clone(),
            p.owned_groups.to_string(),
            p.created_at.to_rfc3339(),
        ]);
    }
    table.print(mode);
    Ok(())
}
