//! Copyright (C) 2022, Dmitriy Pleshevskiy //! //! tas is free software: you can redistribute it and/or modify //! it under the terms of the GNU General Public License as published by //! the Free Software Foundation, either version 3 of the License, or //! (at your option) any later version. //! //! tas is distributed in the hope that it will be useful, //! but WITHOUT ANY WARRANTY; without even the implied warranty of //! MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the //! GNU General Public License for more details. //! //! You should have received a copy of the GNU General Public License //! along with tas. If not, see . //! use crate::cli::print_task_detail; use crate::domain::CurrentTaskInfo; use crate::repo::Repository; #[derive(clap::Args)] pub struct Args { #[clap(long)] print_path: bool, } pub fn execute(repo: impl Repository, args: Args) { let task = match repo.get_current_task_opt() { Ok(None) => { return eprintln!("You don't have an active task."); } Ok(Some(CurrentTaskInfo { task, .. })) => task, Err(err) => { return eprintln!("Cannot read current task: {}", err); } }; if args.print_path { println!( "{}", task.path .unwrap_or_else(|| std::env::current_dir().expect("Cannot get current dir")) .to_string_lossy() ) } else { println!("Information about your current task:"); print_task_detail(&task); } }