Skip to main content

autom8/commands/
projects.rs

1//! Projects command handler.
2//!
3//! Lists all known projects in the autom8 config directory.
4
5use crate::error::Result;
6use crate::output::{BOLD, CYAN, GRAY, RESET};
7
8/// List all known projects.
9///
10/// Displays all projects that have been initialized in the
11/// `~/.config/autom8/` directory.
12///
13/// # Returns
14///
15/// * `Ok(())` on success
16/// * `Err(Autom8Error)` if reading the config directory fails
17pub fn projects_command() -> Result<()> {
18    let projects = crate::config::list_projects()?;
19
20    if projects.is_empty() {
21        println!("{GRAY}No projects found.{RESET}");
22        println!();
23        println!("Run {CYAN}autom8{RESET} in a project directory to create a project.");
24    } else {
25        println!("{BOLD}Known projects:{RESET}");
26        println!();
27        for project in &projects {
28            println!("  {}", project);
29        }
30        println!();
31        println!(
32            "{GRAY}({} project{}){RESET}",
33            projects.len(),
34            if projects.len() == 1 { "" } else { "s" }
35        );
36    }
37
38    Ok(())
39}