add possibility to add and edit links in tasks

This commit is contained in:
Dmitriy Pleshevskiy 2022-08-05 00:54:47 +03:00
parent bd0ea82f8e
commit 80c5265e3b
Signed by: pleshevskiy
GPG key ID: 1B59187B161C0215
2 changed files with 42 additions and 8 deletions

View file

@ -14,7 +14,24 @@ pub enum SubCommand {
Pause,
Finish,
Status,
Add { name: String },
Edit { idx: usize, name: String },
Remove { idx: usize },
Add {
#[clap(short, long)]
link: Option<String>,
name: String,
},
Edit {
#[clap(short, long)]
link: Option<String>,
#[clap(long)]
no_link: bool,
#[clap(short, long)]
name: Option<String>,
idx: usize,
},
Remove {
idx: usize,
},
}

View file

@ -16,10 +16,10 @@ fn main() {
.unwrap_or_default();
match args.command {
cli::SubCommand::Add { name } => {
cli::SubCommand::Add { link, name } => {
tasks.push(Task {
name,
link: None,
link,
description: None,
});
@ -29,12 +29,25 @@ fn main() {
println!("added");
}
cli::SubCommand::Edit { idx, name } => {
cli::SubCommand::Edit {
idx,
name,
link,
no_link,
} => {
if idx == 0 || idx > tasks.len() {
println!("invalid index");
}
tasks[idx - 1].name = name;
let mut task = &mut tasks[idx - 1];
if let Some(name) = name {
task.name = name;
}
if let Some(link) = link {
task.link = Some(link);
} else if no_link {
task.link = None;
}
let mut file = std::fs::File::create(&tasks_file_path).unwrap();
file.write_all(&serde_json::to_vec(&tasks).unwrap())
@ -74,7 +87,11 @@ fn main() {
}
cli::SubCommand::List => {
for (i, task) in tasks.iter().enumerate() {
println!("{}. {}", i + 1, task.name);
print!("{}. ", i + 1);
if task.link.is_some() {
print!("(link) ");
}
println!("{}", task.name);
}
}
cli::SubCommand::Start => {