tas/src/cli/finish.rs

33 lines
924 B
Rust

use crate::repo::{self, Repository};
#[derive(clap::Args)]
pub struct Args {
#[clap(short, long)]
open: bool,
}
pub fn execute(repo: impl Repository, args: Args) {
let task = match repo.finish_task() {
Err(repo::Error::NotFound) => {
return eprintln!("You can use the finish subcommand only when you have an active task")
}
Err(err) => return eprintln!("Cannot finish the task: {}", err),
Ok(task) => task,
};
println!("The task was finished successfully");
println!(" {}", task.name);
if let Some(link) = task.link.as_ref() {
println!(" link: {}", link);
}
if let (Some(link), true) = (task.link.as_ref(), args.open) {
log::debug!("opening link...");
std::process::Command::new("xdg-open")
.arg(link)
.spawn()
.expect("failed to start");
log::debug!("opened");
}
}