okcool can read and even doesnt wrap so i like that some
parent
8f8202282f
commit
4d8fd0597b
|
|
@ -1,4 +1,5 @@
|
||||||
use serde_yaml;
|
use serde_yaml;
|
||||||
|
use serde::ser::{Serialize};
|
||||||
use serde;
|
use serde;
|
||||||
use chrono::{DateTime, Local};
|
use chrono::{DateTime, Local};
|
||||||
use chrono::naive::NaiveDateTime;
|
use chrono::naive::NaiveDateTime;
|
||||||
|
|
@ -8,13 +9,14 @@ use clap::Parser;
|
||||||
|
|
||||||
fn main() {
|
fn main() {
|
||||||
let flags = Flags::new();
|
let flags = Flags::new();
|
||||||
println!("{:?}", flags);
|
let db = DB::new(flags.path).unwrap();
|
||||||
|
println!("{}", db.due().to_string());
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Parser)]
|
#[derive(Debug, Parser)]
|
||||||
struct Flags {
|
struct Flags {
|
||||||
#[arg(short = 'f', long = "file", default_value="$PTTODO_FILE")]
|
#[arg(short = 'f', long = "path", default_value="$PTTODO_FILE")]
|
||||||
file: String,
|
path: String,
|
||||||
|
|
||||||
#[arg(short = 'a', long = "add")]
|
#[arg(short = 'a', long = "add")]
|
||||||
add: Option<String>,
|
add: Option<String>,
|
||||||
|
|
@ -30,10 +32,10 @@ impl Flags {
|
||||||
fn new() -> Flags {
|
fn new() -> Flags {
|
||||||
let mut result = Flags::parse();
|
let mut result = Flags::parse();
|
||||||
|
|
||||||
if result.file.get(..1) == Some("$") {
|
if result.path.get(..1) == Some("$") {
|
||||||
result.file = std::env::var(
|
result.path = std::env::var(
|
||||||
result.file.get(1..).unwrap()
|
result.path.get(1..).unwrap()
|
||||||
).expect(format!("'{}' unset", result.file).as_str());
|
).expect(format!("'{}' unset", result.path).as_str());
|
||||||
}
|
}
|
||||||
|
|
||||||
result
|
result
|
||||||
|
|
@ -222,6 +224,32 @@ impl Tasks {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn to_string(&self) -> String {
|
||||||
|
let mut buffer = Vec::new();
|
||||||
|
let mut serializer = serde_yaml::Serializer::new(&mut buffer);
|
||||||
|
_ = serde_yaml::Value::Sequence(
|
||||||
|
self.0.iter()
|
||||||
|
.map(|x| {
|
||||||
|
let mut x = x.clone();
|
||||||
|
if x.is_due() {
|
||||||
|
x.unset("ts".to_string());
|
||||||
|
}
|
||||||
|
x
|
||||||
|
})
|
||||||
|
.map(|x| {
|
||||||
|
let is = x.get_value("is".to_string());
|
||||||
|
if x.0.len() == 1 && is.is_some() {
|
||||||
|
return is.unwrap();
|
||||||
|
}
|
||||||
|
serde_yaml::Value::from(x.0.clone())
|
||||||
|
})
|
||||||
|
.map(|x| serde_yaml::Value::from(x.clone()))
|
||||||
|
.collect()
|
||||||
|
).serialize(&mut serializer)
|
||||||
|
.expect("failed to serialize");
|
||||||
|
String::from_utf8(buffer).expect("illegal utf8 characters found")
|
||||||
|
}
|
||||||
|
|
||||||
pub fn len(&self) -> usize {
|
pub fn len(&self) -> usize {
|
||||||
self.0.len()
|
self.0.len()
|
||||||
}
|
}
|
||||||
|
|
@ -379,6 +407,10 @@ impl Task {
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
fn unset(&mut self, k: String) {
|
||||||
|
self.0.remove(serde_yaml::Value::String(k));
|
||||||
|
}
|
||||||
|
|
||||||
#[allow(dead_code)] // used in test
|
#[allow(dead_code)] // used in test
|
||||||
fn set(&mut self, k: String, v: String) {
|
fn set(&mut self, k: String, v: String) {
|
||||||
self.0.insert(
|
self.0.insert(
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue