# stampiotic A flyweight tool for checking stampfile freshness. ## Installation Install from source with ```bash $ cargo install stampiotic ``` You can build optimised binaries using Nightly's build-std feature, saving around 200 KiB. ```bash $ cargo +nightly build --release -Z build-std=std,panic_abort -Z build-std-features=panic_immediate_abort --target x86_64-unknown-linux-gnu ``` ## Why? Spinning up a shell (or worse, a Python or Perl script) takes substantially longer than invoking a small binary, so why bother? Some containers might not even include a shell by default. `stampiotic` has exactly one dependency: libc. `stampiotic` is a particularly useful tool for implementing a watchdog timer in Kubernetes. Legacy services can just touch a stampfile periodically, which can then be checked using `stampiotic` as a periodic Kubernetes health check. ## Usage ```bash $ stampiotic max-age stampfile [...] ``` e.g. ```bash $ stampiotic 60s /run/foo/foo-server.stamp 60s $ stampiotic '30 min' make.stamp $ stampiotic 1d long-process-1.stamp long-process-2.stamp File "long-process-2.stamp" is too old (12345s > 86400s) $ echo $? 1 ``` ## Max-age parsing Durations are parsed by [`humantime`](https://crates.io/crates/humantime). | Unit | Supported suffixes | Definition | |--------------|------------------------------|-------------------------------| | nanoseconds | `nsec`/`ns` | 10−9 s | | microseconds | `usec`/`us` | 10−6 s | | milliseconds | `msec`/`ms` | 10−3 s | | seconds | `seconds`/`second`/`sec`/`s` | 1 s | | minutes | `minutes`/`minute`/`min`/`m` | 60 s | | hours | `hours`/`hour`/`hr`/`h` | 3600 s = 60 minutes | | days | `days`/`day`/`d` | 86,400 s = 24 hours | | weeks | `weeks`/`week`/`w` | 604,800 s = 7 days | | months | `months`/`month`/`M` | 30.44 days = 2630016 s | | years | `years`/`year`/`y` | 365.25 days = 31557600 s |