10 Commits

Author SHA1 Message Date
720ee972f8 chore(release): v0.3.0 (#5)
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
chore(release): 0.3.0

Co-authored-by: cuddle-please <bot@cuddle.sh>
Reviewed-on: https://git.front.kjuulh.io/kjuulh/drift/pulls/5
2024-12-13 23:30:48 +01:00
991fd5dd83 fix: test can now run at least 2 times, initial and then via. delay
All checks were successful
continuous-integration/drone/push Build is passing
Signed-off-by: kjuulh <contact@kjuulh.io>
2024-12-13 23:30:07 +01:00
84820dcc82 fix: with child token as well
Some checks failed
continuous-integration/drone/push Build is failing
Signed-off-by: kjuulh <contact@kjuulh.io>
2024-12-13 23:28:44 +01:00
55498adffd feat: allow job to start immediately
Some checks failed
continuous-integration/drone/push Build is failing
Signed-off-by: kjuulh <contact@kjuulh.io>
2024-12-13 23:26:18 +01:00
08145eed13 feat: rename and publish
All checks were successful
continuous-integration/drone/push Build is passing
Signed-off-by: kjuulh <contact@kjuulh.io>
2024-11-17 20:49:32 +01:00
fb4bd51d71 Merge pull request 'chore(release): v0.2.0' (#3) from cuddle-please/release into main
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/tag Build is passing
Reviewed-on: https://git.front.kjuulh.io/kjuulh/drift/pulls/3
2024-08-06 21:49:21 +02:00
cuddle-please
3a3af4757c chore(release): 0.2.0
All checks were successful
continuous-integration/drone/push Build is passing
continuous-integration/drone/pr Build is passing
2024-08-02 07:29:49 +00:00
69c8b7409b feat: use actual delimination
All checks were successful
continuous-integration/drone/push Build is passing
Signed-off-by: kjuulh <contact@kjuulh.io>
2024-08-02 09:29:29 +02:00
85b6079b60 feat: use source instead
All checks were successful
continuous-integration/drone/push Build is passing
Signed-off-by: kjuulh <contact@kjuulh.io>
2024-08-02 09:29:13 +02:00
989f073061 feat: add inner error
All checks were successful
continuous-integration/drone/push Build is passing
Signed-off-by: kjuulh <contact@kjuulh.io>
2024-08-02 09:21:56 +02:00
5 changed files with 57 additions and 19 deletions

View File

@@ -6,6 +6,23 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
## [Unreleased]
## [0.3.0] - 2024-12-13
### Added
- allow job to start immediately
- rename and publish
### Fixed
- test can now run at least 2 times, initial and then via. delay
- with child token as well
## [0.2.0] - 2024-08-02
### Added
- use actual delimination
- use source instead
- add inner error
## [0.1.0] - 2024-08-02
### Added

28
Cargo.lock generated
View File

@@ -1,6 +1,6 @@
# This file is automatically @generated by Cargo.
# It is not intended for manual editing.
version = 3
version = 4
[[package]]
name = "aho-corasick"
@@ -52,19 +52,6 @@ version = "1.0.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
[[package]]
name = "drift"
version = "0.1.0"
dependencies = [
"anyhow",
"async-trait",
"thiserror",
"tokio",
"tokio-util",
"tracing",
"tracing-test",
]
[[package]]
name = "futures-core"
version = "0.3.30"
@@ -140,6 +127,19 @@ dependencies = [
"windows-sys",
]
[[package]]
name = "nodrift"
version = "0.2.0"
dependencies = [
"anyhow",
"async-trait",
"thiserror",
"tokio",
"tokio-util",
"tracing",
"tracing-test",
]
[[package]]
name = "nu-ansi-term"
version = "0.46.0"

View File

@@ -3,7 +3,7 @@ members = ["crates/*"]
resolver = "2"
[workspace.package]
version = "0.1.0"
version = "0.3.0"
[workspace.dependencies]
drift = { path = "crates/drift" }

View File

@@ -1,6 +1,8 @@
[package]
name = "drift"
name = "nodrift"
version.workspace = true
description = "no Drift is an application for scheduling recurring jobs"
license = "MIT"
edition = "2021"
[dependencies]

View File

@@ -5,8 +5,11 @@ use std::future::Future;
use tokio::time;
use tokio_util::sync::CancellationToken;
#[derive(Debug, Clone, thiserror::Error)]
pub enum DriftError {}
#[derive(Debug, thiserror::Error)]
pub enum DriftError {
#[error("job failed with inner error: {0}")]
JobError(#[source] anyhow::Error),
}
pub fn schedule<F, Fut>(interval: Duration, func: F) -> CancellationToken
where
@@ -31,6 +34,22 @@ where
async move {
let mut wait = interval;
let start = std::time::Instant::now();
tracing::debug!("running job");
let child_token = cancellation_token.child_token();
if let Err(e) = drifter.execute(child_token).await {
tracing::error!("drift job failed with error: {}, stopping routine", e);
cancellation_token.cancel();
}
let elapsed = start.elapsed();
wait = interval.saturating_sub(elapsed);
tracing::debug!(
"job took: {}ms, waiting: {}ms for next run",
elapsed.as_millis(),
wait.as_millis()
);
loop {
let child_token = cancellation_token.child_token();
@@ -184,7 +203,7 @@ mod tests {
assert!(token.is_cancelled());
let counter = drifter.counter.lock().unwrap();
assert_eq!(*counter, 1);
assert_eq!(*counter, 2);
Ok(())
}