use anyhow::Result;
use clap::Args;
use comfy_table::{Cell, Color, Table};
use opencode_cloud_core::docker::{CONTAINER_NAME, DockerClient, list_users};
#[derive(Args)]
pub struct UserListArgs {}
pub async fn cmd_user_list(
client: &DockerClient,
_args: &UserListArgs,
quiet: bool,
_verbose: u8,
) -> Result<()> {
let users = list_users(client, CONTAINER_NAME).await?;
if users.is_empty() {
if !quiet {
println!("No users configured.");
}
return Ok(());
}
if quiet {
for user in &users {
println!("{}", user.username);
}
return Ok(());
}
let mut table = Table::new();
table.set_header(vec!["Username", "Status", "UID", "Home", "Shell"]);
for user in &users {
let status_cell = if user.locked {
Cell::new("disabled").fg(Color::Yellow)
} else {
Cell::new("enabled").fg(Color::Green)
};
table.add_row(vec![
Cell::new(&user.username),
status_cell,
Cell::new(user.uid.to_string()),
Cell::new(&user.home),
Cell::new(&user.shell),
]);
}
println!("{table}");
Ok(())
}