Compare commits
3 Commits
c608fd2668
...
2fc94ce2b7
Author | SHA1 | Date |
---|---|---|
Moridius | 2fc94ce2b7 | |
Moridius | ecf967e3f5 | |
Moridius | 17086e7da6 |
|
@ -14,7 +14,7 @@ checksum = "cf1de2fe8c75bc145a2f577add951f8134889b4795d47466a54a5c846d691693"
|
|||
|
||||
[[package]]
|
||||
name = "blinddate"
|
||||
version = "0.2.0"
|
||||
version = "0.3.0"
|
||||
dependencies = [
|
||||
"chrono",
|
||||
"enigo",
|
||||
|
|
|
@ -1,11 +1,9 @@
|
|||
[package]
|
||||
name = "blinddate"
|
||||
version = "0.2.0"
|
||||
version = "0.3.0"
|
||||
authors = ["Moridius <moridius-github@posteo.hu>"]
|
||||
edition = "2018"
|
||||
|
||||
# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html
|
||||
|
||||
[dependencies]
|
||||
chrono = "0.4.9"
|
||||
enigo = "0.0.13"
|
||||
chrono = "0.4"
|
||||
enigo = "0.0"
|
||||
|
|
44
src/main.rs
44
src/main.rs
|
@ -13,18 +13,18 @@ fn command_to_date(command: &str) -> Result<Date<Local>, ()> {
|
|||
}
|
||||
|
||||
fn calc_date(command: &str, today: Date<Local>) -> Result<Date<Local>, ()> {
|
||||
let wday = today.weekday().num_days_from_monday() as i64;
|
||||
if command == "today" {
|
||||
return Ok(today);
|
||||
let offset = if command == "today" {
|
||||
Ok(0)
|
||||
} else if command == "tomorrow" {
|
||||
return Ok(today + Duration::days(1));
|
||||
Ok(1)
|
||||
} else if command == "yesterday" {
|
||||
return Ok(today - Duration::days(1));
|
||||
Ok(-1)
|
||||
} else if command == "daybeforeyesterday" {
|
||||
return Ok(today - Duration::days(2));
|
||||
Ok(-2)
|
||||
} else if command == "dayaftertomorrow" {
|
||||
return Ok(today + Duration::days(2));
|
||||
Ok(2)
|
||||
} else if command.starts_with("next") || command.starts_with("last") {
|
||||
let wday = today.weekday().num_days_from_monday() as i64;
|
||||
let target = match &command[4..] {
|
||||
"monday" => Ok(0),
|
||||
"tuesday" => Ok(1),
|
||||
|
@ -38,17 +38,24 @@ fn calc_date(command: &str, today: Date<Local>) -> Result<Date<Local>, ()> {
|
|||
|
||||
if let Ok(target) = target {
|
||||
if command.starts_with("next") {
|
||||
let offset = (target - wday + 7 - 1) % 7 + 1;
|
||||
return Ok(today + Duration::days(offset));
|
||||
Ok((target - wday + 7 - 1) % 7 + 1)
|
||||
} else {
|
||||
Ok(-((wday - target + 7 - 1) % 7 + 1))
|
||||
}
|
||||
let offset = (wday - target + 7 - 1) % 7 + 1;
|
||||
return Ok(today - Duration::days(offset));
|
||||
} else {
|
||||
Err(())
|
||||
}
|
||||
} else {
|
||||
return Err(());
|
||||
};
|
||||
|
||||
if let Ok(offset) = offset {
|
||||
return Ok(today + Duration::days(offset));
|
||||
}
|
||||
Err(())
|
||||
}
|
||||
|
||||
fn type_date(date: Date<Local>, alt_tab: bool) {
|
||||
fn type_date(date: Date<Local>, alt_tab: bool, enter: bool) {
|
||||
let date_str = format!("{}", date.format("%Y-%m-%d"));
|
||||
let mut enigo = Enigo::new();
|
||||
if alt_tab {
|
||||
|
@ -57,19 +64,26 @@ fn type_date(date: Date<Local>, alt_tab: bool) {
|
|||
enigo.key_up(Key::Alt);
|
||||
thread::sleep(time::Duration::from_millis(100));
|
||||
}
|
||||
|
||||
for c in date_str.chars() {
|
||||
enigo.key_click(Key::Layout(c));
|
||||
}
|
||||
// enigo.key_click(Key::Return);
|
||||
|
||||
if enter {
|
||||
enigo.key_click(Key::Return);
|
||||
}
|
||||
}
|
||||
|
||||
fn main() {
|
||||
let mut command = String::new();
|
||||
let mut alt_tab = false;
|
||||
let mut enter = false;
|
||||
|
||||
for arg in env::args() {
|
||||
for arg in env::args().skip(1) {
|
||||
if arg == "--tab" {
|
||||
alt_tab = true;
|
||||
} else if arg == "--enter" {
|
||||
enter = true;
|
||||
} else {
|
||||
command = arg.to_lowercase();
|
||||
break;
|
||||
|
@ -77,7 +91,7 @@ fn main() {
|
|||
}
|
||||
|
||||
if let Ok(date) = command_to_date(&command) {
|
||||
type_date(date, alt_tab);
|
||||
type_date(date, alt_tab, enter);
|
||||
} else {
|
||||
eprintln!("blinddate");
|
||||
eprintln!("Calculates a date and types it. Use with a shell script to enter dates into files rapidly.");
|
||||
|
|
Loading…
Reference in New Issue