aboutsummaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAmir Saeid <amir@glgdgt.com>2025-06-29 19:11:50 +0100
committerAmir Saeid <amir@glgdgt.com>2025-06-29 19:11:50 +0100
commit41780fcbddf210f6093f71fbd32c28a1012a4f50 (patch)
tree8ac0f69847305bcb95fab8c89b645adc5ca2ec29 /src
parentf58b3fcf859f48ecda7a489b93e5c1eab375810f (diff)
Upgrade all dependencies
Diffstat (limited to 'src')
-rw-r--r--src/bin/sctd.rs41
-rw-r--r--src/lib.rs7
2 files changed, 33 insertions, 15 deletions
diff --git a/src/bin/sctd.rs b/src/bin/sctd.rs
index 9e648c3..d691586 100644
--- a/src/bin/sctd.rs
+++ b/src/bin/sctd.rs
@@ -6,9 +6,9 @@ extern crate clap;
extern crate spa;
use chrono::prelude::*;
-use clap::{value_t_or_exit, App, Arg};
+use clap::{Arg, Command};
use env_logger::Env;
-use spa::calc_sunrise_and_set;
+use spa::{sunrise_and_set, StdFloatOps};
use std::thread;
use std::time::Duration;
@@ -16,34 +16,49 @@ fn main() {
let env = Env::default().filter_or("SCTD_LOG_LEVEL", "info");
env_logger::init_from_env(env);
- let matches = App::new("sctd")
- .version("0.3.0")
+ let matches = Command::new("sctd")
+ .version(option_env!("CARGO_PKG_VERSION").unwrap_or("N/A"))
.about("set color temperature daemon")
.arg(
- Arg::with_name("latitude")
+ Arg::new("latitude")
.long("latitude")
- .takes_value(true)
+ .value_name("LATITUDE")
+ .help("Latitude coordinate")
.allow_hyphen_values(true),
)
.arg(
- Arg::with_name("longitude")
+ Arg::new("longitude")
.long("longitude")
- .takes_value(true)
+ .value_name("LONGITUDE")
+ .help("Longitude coordinate")
.allow_hyphen_values(true),
)
- .arg(Arg::with_name("reset").long("reset"))
+ .arg(
+ Arg::new("reset")
+ .long("reset")
+ .help("Reset temperature")
+ .action(clap::ArgAction::SetTrue),
+ )
.get_matches();
- if matches.is_present("reset") {
+ if matches.get_flag("reset") {
sctd::reset_temp();
} else {
- let latitude = value_t_or_exit!(matches, "latitude", f64);
- let longitude = value_t_or_exit!(matches, "longitude", f64);
+ let latitude: f64 = matches
+ .get_one::<String>("latitude")
+ .expect("latitude is required")
+ .parse()
+ .expect("latitude must be a valid number");
+ let longitude: f64 = matches
+ .get_one::<String>("longitude")
+ .expect("longitude is required")
+ .parse()
+ .expect("longitude must be a valid number");
let mut temp = 0;
loop {
let utc: DateTime<Utc> = Utc::now();
- match calc_sunrise_and_set(utc, latitude, longitude) {
+ match sunrise_and_set::<StdFloatOps>(utc, latitude, longitude) {
Ok(ss) => {
let new_temp = sctd::get_temp(utc, &ss, latitude, longitude) as u32;
if new_temp != temp {
diff --git a/src/lib.rs b/src/lib.rs
index ccb2b52..05f8d9e 100644
--- a/src/lib.rs
+++ b/src/lib.rs
@@ -6,7 +6,7 @@ extern crate spa;
mod platform;
use chrono::prelude::*;
-use spa::{calc_solar_position, SunriseAndSet};
+use spa::{solar_position, StdFloatOps, SunriseAndSet};
#[cfg(target_os = "linux")]
use platform::linux as os;
@@ -48,7 +48,10 @@ fn get_transition_progress_from_elevation(elevation: f64) -> f64 {
pub fn get_temp(utc: DateTime<Utc>, ss: &SunriseAndSet, lat: f64, lon: f64) -> f64 {
match *ss {
SunriseAndSet::Daylight(_, _) => {
- let elevation = 90f64 - calc_solar_position(utc, lat, lon).unwrap().zenith_angle;
+ let elevation = 90f64
+ - solar_position::<StdFloatOps>(utc, lat, lon)
+ .unwrap()
+ .zenith_angle;
debug!("elevation: {elevation}");
let progress = get_transition_progress_from_elevation(elevation);
LOW_TEMP + (progress * (HIGH_TEMP - LOW_TEMP))