add priority subcommand
This commit is contained in:
parent
80c5265e3b
commit
48aab9e860
2 changed files with 53 additions and 1 deletions
11
src/cli.rs
11
src/cli.rs
|
@ -34,4 +34,15 @@ pub enum SubCommand {
|
|||
Remove {
|
||||
idx: usize,
|
||||
},
|
||||
Priority {
|
||||
idx: usize,
|
||||
#[clap(subcommand)]
|
||||
priority: Priority,
|
||||
},
|
||||
}
|
||||
|
||||
#[derive(Parser)]
|
||||
pub enum Priority {
|
||||
Before { idx: usize },
|
||||
After { idx: usize },
|
||||
}
|
||||
|
|
43
src/main.rs
43
src/main.rs
|
@ -1,6 +1,9 @@
|
|||
use clap::Parser;
|
||||
use serde::{Deserialize, Serialize};
|
||||
use std::io::{BufRead, Write};
|
||||
use std::{
|
||||
cmp::Ordering,
|
||||
io::{BufRead, Write},
|
||||
};
|
||||
use xdg::BaseDirectories;
|
||||
|
||||
mod cli;
|
||||
|
@ -94,6 +97,44 @@ fn main() {
|
|||
println!("{}", task.name);
|
||||
}
|
||||
}
|
||||
cli::SubCommand::Priority {
|
||||
idx: target_idx,
|
||||
priority,
|
||||
} => {
|
||||
if target_idx == 0 || target_idx > tasks.len() {
|
||||
println!("invalid index");
|
||||
}
|
||||
|
||||
let idx = match priority {
|
||||
cli::Priority::Before { idx } | cli::Priority::After { idx } => {
|
||||
match target_idx.cmp(&idx) {
|
||||
Ordering::Equal => return,
|
||||
Ordering::Less => idx - 1,
|
||||
Ordering::Greater => idx,
|
||||
}
|
||||
}
|
||||
};
|
||||
if idx == 0 || idx > tasks.len() {
|
||||
println!("invalid index");
|
||||
}
|
||||
|
||||
let target = tasks.remove(target_idx - 1);
|
||||
|
||||
match priority {
|
||||
cli::Priority::Before { .. } => {
|
||||
tasks.insert(idx - 1, target);
|
||||
println!("{} < {}", target_idx, idx);
|
||||
}
|
||||
cli::Priority::After { .. } => {
|
||||
tasks.insert(idx, target);
|
||||
println!("{} > {}", target_idx, idx);
|
||||
}
|
||||
}
|
||||
|
||||
let mut file = std::fs::File::create(&tasks_file_path).unwrap();
|
||||
file.write_all(&serde_json::to_vec(&tasks).unwrap())
|
||||
.unwrap();
|
||||
}
|
||||
cli::SubCommand::Start => {
|
||||
println!("starting...");
|
||||
println!("-- on start hook found");
|
||||
|
|
Loading…
Reference in a new issue