mirror of
https://github.com/nikolassv/bartib
synced 2024-12-11 12:42:27 +00:00
show list of projects
This commit is contained in:
parent
592efb5e24
commit
6bc6287635
2 changed files with 23 additions and 1 deletions
18
src/lib.rs
18
src/lib.rs
|
@ -89,6 +89,24 @@ pub fn list(file_name: &str, filter: ActivityFilter, do_group_activities: bool)
|
||||||
Ok(())
|
Ok(())
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// lists all projects
|
||||||
|
pub fn list_projects(file_name: &str) -> Result<()> {
|
||||||
|
let file_content = bartib_file::get_file_content(file_name)?;
|
||||||
|
|
||||||
|
let mut all_projects : Vec<&String> = get_activities(&file_content)
|
||||||
|
.map(|activity| &activity.project)
|
||||||
|
.collect();
|
||||||
|
|
||||||
|
all_projects.sort_unstable();
|
||||||
|
all_projects.dedup();
|
||||||
|
|
||||||
|
for project in all_projects {
|
||||||
|
println!("{}", project);
|
||||||
|
}
|
||||||
|
|
||||||
|
Ok(())
|
||||||
|
}
|
||||||
|
|
||||||
fn get_index_of_first_element(length: usize, sub: Option<usize>) -> usize {
|
fn get_index_of_first_element(length: usize, sub: Option<usize>) -> usize {
|
||||||
if let Some(s) = sub {
|
if let Some(s) = sub {
|
||||||
length.saturating_sub(s)
|
length.saturating_sub(s)
|
||||||
|
|
|
@ -85,6 +85,9 @@ fn main() -> Result<()> {
|
||||||
.help("do not group activities by date in list"),
|
.help("do not group activities by date in list"),
|
||||||
),
|
),
|
||||||
)
|
)
|
||||||
|
.subcommand(
|
||||||
|
SubCommand::with_name("projects").about("list all projects")
|
||||||
|
)
|
||||||
.get_matches();
|
.get_matches();
|
||||||
|
|
||||||
let file_name = matches.value_of("file").context("Please specify a file with your activity log either as -f option or as BARTIB_FILE environment variable")?;
|
let file_name = matches.value_of("file").context("Please specify a file with your activity log either as -f option or as BARTIB_FILE environment variable")?;
|
||||||
|
@ -115,7 +118,8 @@ fn run_subcommand(matches: &ArgMatches, file_name: &str) -> Result<()> {
|
||||||
|
|
||||||
let do_group_activities = !sub_m.is_present("no_grouping") && !filter.date.is_some();
|
let do_group_activities = !sub_m.is_present("no_grouping") && !filter.date.is_some();
|
||||||
bartib::list(file_name, filter, do_group_activities)
|
bartib::list(file_name, filter, do_group_activities)
|
||||||
}
|
},
|
||||||
|
("projects", Some(_)) => bartib::list_projects(file_name),
|
||||||
_ => bail!("Unknown command"),
|
_ => bail!("Unknown command"),
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in a new issue