Skip to main content

task_commander/
lib.rs

1#![allow(clippy::doc_markdown)]
2#![doc = include_str!("../docs/lib.rs.md")]
3
4pub mod command;
5pub mod errors;
6pub mod loader;
7pub mod tasks;
8
9use crate::errors::Result;
10use crate::loader::load_definitions;
11use crate::tasks::Tasks;
12use antex::ColorMode;
13
14/// Runs the application.
15///
16/// # Errors
17///
18/// Returns [`TaskCommanderError`](errors::TaskCommanderError) when running the application fails.
19pub fn run() -> Result<()> {
20    let definitions = load_definitions()?;
21    let tasks = Tasks::new(&definitions)?;
22    let args = std::env::args().skip(1).collect::<Vec<String>>();
23    if args.len() == 1 {
24        let task_name = &args[0];
25        let exit_status = tasks.execute(task_name)?;
26        std::process::exit(exit_status.code().unwrap_or(1));
27    }
28    tasks.list(ColorMode::default());
29    Ok(())
30}