summaryrefslogtreecommitdiff
path: root/src/main.rs
diff options
context:
space:
mode:
authorJesper Jensen <jesper@jnsn.dev>2026-02-09 23:04:07 +0100
committerJesper Jensen <jesper@jnsn.dev>2026-02-09 23:08:48 +0100
commit3856d94661bd5605a839983805ec8ad962c4d307 (patch)
treee694f7c88a25cd75e5be86f5347b5811b85220ca /src/main.rs
parent343eb8bb594ca32f78b91d220ca3c303ff1aa7a2 (diff)
Remove chrono dependency
Removing that dependency didn't take a lot of code, and fewer dependencies are better
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs30
1 files changed, 17 insertions, 13 deletions
diff --git a/src/main.rs b/src/main.rs
index c4366ca..c1888ea 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -4,19 +4,23 @@ mod docker;
mod manifest;
mod dockerfile;
mod metrics;
+mod time;
mod db;
mod registry;
mod updater;
+mod refresher;
use crate::docker::DockerRef;
use crate::manifest::ManifestFile;
use crate::dockerfile::DockerfileFile;
use crate::db::{Db, SqliteDb};
+use crate::time::Timestamp;
use crate::registry::{Registries, HttpRegistry, Config, Credentials};
use crate::updater::{FileInput, FilePatch, update_images};
use rand::distr::{Alphanumeric, SampleString};
use std::io::Write;
+use std::time::Duration;
struct Repository {
url: String,
@@ -56,7 +60,7 @@ fn is_yaml(path: &std::path::Path) -> bool {
return false;
}
-fn run_tool(db: &dyn Db, reg: &dyn Registries, repos: &Vec<Repository>, mut infile_paths: Vec<std::path::PathBuf>) -> chrono::DateTime<chrono::Utc> {
+fn run_tool(db: &dyn Db, reg: &dyn Registries, repos: &Vec<Repository>, mut infile_paths: Vec<std::path::PathBuf>) -> Timestamp {
for repo in repos {
if repo.dest.exists() {
let mut gitcmd = std::process::Command::new("git");
@@ -166,9 +170,9 @@ fn run_tool(db: &dyn Db, reg: &dyn Registries, repos: &Vec<Repository>, mut infi
file_inputs.push(FileInput { path, content, images });
}
- let now = chrono::offset::Utc::now();
+ let now = Timestamp::now();
let mut outcomes: Vec<Result<Vec<FilePatch>, String>> = Vec::with_capacity(file_inputs.len());
- update_images(&now, db, reg, &file_inputs, &mut outcomes);
+ update_images(now, db, reg, &file_inputs, &mut outcomes);
for i in 0..file_inputs.len() {
let file = &file_inputs[i];
@@ -245,8 +249,8 @@ fn run_tool(db: &dyn Db, reg: &dyn Registries, repos: &Vec<Repository>, mut infi
metrics::get().git_operations.with_label_values(&["push", "success"]).inc();
}
- let now = chrono::offset::Utc::now();
- let mut min_expiry = now + chrono::Duration::hours(24);
+ let now = Timestamp::now();
+ let mut min_expiry = now + Duration::from_secs(86400);
for file in &file_inputs {
for image_range in &file.images {
let img = DockerRef::parse(&file.content, image_range);
@@ -279,7 +283,7 @@ fn main() {
let mut repos = vec![];
let mut auths = vec![];
let mut docker_auths: Vec<(String, Credentials)> = vec![];
- let mut registry_ttls: Vec<(String, chrono::Duration)> = vec![];
+ let mut registry_ttls: Vec<(String, Duration)> = vec![];
let workdir = std::env::current_dir().unwrap();
if config_path.is_dir() {
@@ -479,8 +483,8 @@ fn main() {
match reader.parse_next() {
Ok(json_event_parser::JsonEvent::Number(n)) => {
- let minutes: i64 = n.parse().unwrap();
- registry_ttls.push((host, chrono::Duration::minutes(minutes)));
+ let minutes: u64 = n.parse().unwrap();
+ registry_ttls.push((host, Duration::from_secs(minutes * 60)));
},
_ => panic!("Invalid registry config json"),
}
@@ -512,7 +516,7 @@ fn main() {
// Merge docker_auths and registry_ttls into final configs
for (host, creds) in docker_auths {
- let mut ttl = chrono::Duration::minutes(1440);
+ let mut ttl = Duration::from_secs(86400);
for (h, t) in &registry_ttls {
if h == &host {
ttl = *t;
@@ -554,11 +558,11 @@ fn main() {
let run_duration = run_start.elapsed().as_secs_f64();
metrics::get().run_duration.set(run_duration);
- metrics::get().next_wakeup.set(next_wakeup.timestamp() as f64);
+ metrics::get().next_wakeup.set(next_wakeup.duration_since(Timestamp::ZERO).unwrap().as_secs() as f64);
metrics::get().state.set(metrics::STATE_IDLE);
- let sleep_duration = next_wakeup - chrono::offset::Utc::now();
- println!("Waiting {} seconds for next run", sleep_duration.num_seconds());
- std::thread::sleep(sleep_duration.to_std().unwrap());
+ let sleep_duration = next_wakeup.duration_since(Timestamp::now()).unwrap_or(Duration::ZERO);
+ println!("Waiting {} seconds for next run", sleep_duration.as_secs());
+ std::thread::sleep(sleep_duration);
}
}