1
Fork 0
generated from lucas/rust-template

Compare commits

..

13 commits

Author SHA1 Message Date
e27711fa3f
Merge pull request 'Fix CI step names' (#26) from feat/ci into master
All checks were successful
check / build (push) Successful in 57s
check / check (push) Successful in 43s
Reviewed-on: #26
2025-06-20 20:41:06 +02:00
e58cb628c0
Fix CI step names
All checks were successful
check / build (pull_request_target) Successful in 58s
check / check (pull_request_target) Successful in 44s
2025-06-20 20:39:08 +02:00
bd02952b91
Merge pull request 'Implement CI' (#25) from feat/ci into master
All checks were successful
check / build (push) Successful in 1m51s
check / check (push) Successful in 1m8s
Reviewed-on: #25
2025-06-20 20:35:36 +02:00
2f5754a9eb
Add CI workflow 2025-06-20 20:35:03 +02:00
c73f26bd67
Fix compiler issues
Apparently some changes in mlua that weren't caught during the update.
2025-06-20 20:34:26 +02:00
6d7ccda449
Merge pull request 'Update Rust crate reqwest to v0.12.20' (#24) from renovate/reqwest-0.x-lockfile into master
Reviewed-on: #24
2025-06-11 11:28:44 +02:00
09abc20574
Update Rust crate reqwest to v0.12.20 2025-06-10 19:01:42 +00:00
94ce380eea
Merge pull request 'Update Rust crate color-eyre to v0.6.5' (#22) from renovate/color-eyre-0.x-lockfile into master
Reviewed-on: #22
2025-06-03 17:04:58 +02:00
2dcd69e6d2
Merge pull request 'Update Rust crate reqwest to v0.12.19' (#23) from renovate/reqwest-0.x-lockfile into master
Reviewed-on: #23
2025-06-03 17:04:48 +02:00
183394831c
Update Rust crate reqwest to v0.12.19 2025-06-02 12:16:32 +00:00
f07d09572f
Update Rust crate color-eyre to v0.6.5 2025-05-30 16:46:26 +00:00
2574dedfdc
Merge pull request 'Disable excessive rebase for Renovate' (#21) from feat/renovate into master
Reviewed-on: #21
2025-05-30 11:52:07 +02:00
b2699a4601
Disable excessive rebase for Renovate 2025-05-30 11:51:13 +02:00
6 changed files with 119 additions and 49 deletions

View file

@ -0,0 +1,27 @@
name: check
on:
push:
branches: [master]
pull_request_target:
jobs:
build:
runs-on: docker
steps:
- uses: https://code.forgejo.org/actions/checkout@v4
- uses: https://github.com/actions-rust-lang/setup-rust-toolchain@fb51252c7ba57d633bc668f941da052e410add48
- name: Build
run: cargo build
check:
runs-on: docker
steps:
- uses: https://code.forgejo.org/actions/checkout@v4
- uses: https://github.com/actions-rust-lang/setup-rust-toolchain@fb51252c7ba57d633bc668f941da052e410add48
with:
components: clippy, rustfmt
- name: Run clippy
run: cargo clippy -- -D warnings
- name: Run rustfmt
run: cargo fmt --all -- --check

View file

@ -3,8 +3,7 @@
"extends": [ "extends": [
"config:recommended", "config:recommended",
":combinePatchMinorReleases", ":combinePatchMinorReleases",
":enableVulnerabilityAlerts", ":enableVulnerabilityAlerts"
":rebaseStalePrs"
], ],
"prConcurrentLimit": 10, "prConcurrentLimit": 10,
"branchPrefix": "renovate/" "branchPrefix": "renovate/"

118
Cargo.lock generated
View file

@ -26,6 +26,17 @@ dependencies = [
"memchr", "memchr",
] ]
[[package]]
name = "async-trait"
version = "0.1.82"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "a27b8a3a6e1a44fa4c8baf1f653e4172e81486d4941f2237e20dc2d0cf4ddff1"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[[package]] [[package]]
name = "autocfg" name = "autocfg"
version = "1.3.0" version = "1.3.0"
@ -34,13 +45,13 @@ checksum = "0c4b4d0bd25bd0b74681c0ad21497610ce1b7c91b1022cd21c80c6fbdd9476b0"
[[package]] [[package]]
name = "axum" name = "axum"
version = "0.8.4" version = "0.7.5"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "021e862c184ae977658b36c4500f7feac3221ca5da43e3f25bd04ab6c79a29b5" checksum = "3a6c9af12842a67734c9a2e355436e5d03b22383ed60cf13cd0c18fbfe3dcbcf"
dependencies = [ dependencies = [
"async-trait",
"axum-core", "axum-core",
"bytes", "bytes",
"form_urlencoded",
"futures-util", "futures-util",
"http", "http",
"http-body", "http-body",
@ -58,9 +69,9 @@ dependencies = [
"serde_json", "serde_json",
"serde_path_to_error", "serde_path_to_error",
"serde_urlencoded", "serde_urlencoded",
"sync_wrapper", "sync_wrapper 1.0.1",
"tokio", "tokio",
"tower", "tower 0.4.13",
"tower-layer", "tower-layer",
"tower-service", "tower-service",
"tracing", "tracing",
@ -68,19 +79,20 @@ dependencies = [
[[package]] [[package]]
name = "axum-core" name = "axum-core"
version = "0.5.2" version = "0.4.3"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "68464cd0412f486726fb3373129ef5d2993f90c34bc2bc1c1e9943b2f4fc7ca6" checksum = "a15c63fd72d41492dc4f497196f5da1fb04fb7529e631d73630d1b491e47a2e3"
dependencies = [ dependencies = [
"async-trait",
"bytes", "bytes",
"futures-core", "futures-util",
"http", "http",
"http-body", "http-body",
"http-body-util", "http-body-util",
"mime", "mime",
"pin-project-lite", "pin-project-lite",
"rustversion", "rustversion",
"sync_wrapper", "sync_wrapper 0.1.2",
"tower-layer", "tower-layer",
"tower-service", "tower-service",
"tracing", "tracing",
@ -158,27 +170,27 @@ checksum = "baf1de4339761588bc0619e3cbc0120ee582ebb74b53b4efbf79117bd2da40fd"
[[package]] [[package]]
name = "color-eyre" name = "color-eyre"
version = "0.6.4" version = "0.6.5"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e6e1761c0e16f8883bbbb8ce5990867f4f06bf11a0253da6495a04ce4b6ef0ec" checksum = "e5920befb47832a6d61ee3a3a846565cfa39b331331e68a3b1d1116630f2f26d"
dependencies = [ dependencies = [
"backtrace", "backtrace",
"color-spantrace", "color-spantrace",
"eyre", "eyre",
"indenter", "indenter",
"once_cell", "once_cell",
"owo-colors 4.2.0", "owo-colors",
"tracing-error", "tracing-error",
] ]
[[package]] [[package]]
name = "color-spantrace" name = "color-spantrace"
version = "0.2.1" version = "0.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cd6be1b2a7e382e2b98b43b2adcca6bb0e465af0bdd38123873ae61eb17a72c2" checksum = "b8b88ea9df13354b55bc7234ebcce36e6ef896aca2e42a15de9e10edce01b427"
dependencies = [ dependencies = [
"once_cell", "once_cell",
"owo-colors 3.5.0", "owo-colors",
"tracing-core", "tracing-core",
"tracing-error", "tracing-error",
] ]
@ -527,9 +539,9 @@ dependencies = [
[[package]] [[package]]
name = "matchit" name = "matchit"
version = "0.8.4" version = "0.7.3"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "47e1ffaa40ddd1f3ed91f717a33c8c0ee23fff369e3aa8772b9605cc1d22f4c3" checksum = "0e7465ac9959cc2b1404e8e2367b43684a6d13790fe23056cc8c6c5a6b7bcb94"
[[package]] [[package]]
name = "memchr" name = "memchr"
@ -677,12 +689,6 @@ version = "0.1.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39"
[[package]]
name = "owo-colors"
version = "3.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c1b04fb49957986fdce4d6ee7a65027d55d4b6d2265e5848bbb507b58ccfdb6f"
[[package]] [[package]]
name = "owo-colors" name = "owo-colors"
version = "4.2.0" version = "4.2.0"
@ -718,6 +724,26 @@ version = "2.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e" checksum = "e3148f5046208a5d56bcfc03053e3ca6334e51da8dfb19b6cdc8b306fae3283e"
[[package]]
name = "pin-project"
version = "1.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b6bf43b791c5b9e34c3d182969b4abb522f9343702850a2e57f460d00d09b4b3"
dependencies = [
"pin-project-internal",
]
[[package]]
name = "pin-project-internal"
version = "1.1.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2f38a4412a78282e09a2cf38d195ea5420d15ba0602cb375210efbc877243965"
dependencies = [
"proc-macro2",
"quote",
"syn",
]
[[package]] [[package]]
name = "pin-project-lite" name = "pin-project-lite"
version = "0.2.14" version = "0.2.14"
@ -918,9 +944,9 @@ checksum = "7a66a03ae7c801facd77a29370b4faec201768915ac14a721ba36f20bc9c209b"
[[package]] [[package]]
name = "reqwest" name = "reqwest"
version = "0.12.18" version = "0.12.20"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e98ff6b0dbbe4d5a37318f433d4fc82babd21631f194d370409ceb2e40b2f0b5" checksum = "eabf4c97d9130e2bf606614eb937e86edac8292eaa6f422f995d7e8de1eb1813"
dependencies = [ dependencies = [
"base64", "base64",
"bytes", "bytes",
@ -931,11 +957,8 @@ dependencies = [
"hyper", "hyper",
"hyper-rustls", "hyper-rustls",
"hyper-util", "hyper-util",
"ipnet",
"js-sys", "js-sys",
"log", "log",
"mime",
"once_cell",
"percent-encoding", "percent-encoding",
"pin-project-lite", "pin-project-lite",
"quinn", "quinn",
@ -944,10 +967,10 @@ dependencies = [
"serde", "serde",
"serde_json", "serde_json",
"serde_urlencoded", "serde_urlencoded",
"sync_wrapper", "sync_wrapper 1.0.1",
"tokio", "tokio",
"tokio-rustls", "tokio-rustls",
"tower", "tower 0.5.2",
"tower-http", "tower-http",
"tower-service", "tower-service",
"url", "url",
@ -1187,6 +1210,12 @@ dependencies = [
"unicode-ident", "unicode-ident",
] ]
[[package]]
name = "sync_wrapper"
version = "0.1.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2047c6ded9c721764247e62cd3b03c09ffc529b2ba5b10ec482ae507a4a70160"
[[package]] [[package]]
name = "sync_wrapper" name = "sync_wrapper"
version = "1.0.1" version = "1.0.1"
@ -1281,14 +1310,14 @@ dependencies = [
[[package]] [[package]]
name = "tower" name = "tower"
version = "0.5.2" version = "0.4.13"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9" checksum = "b8fa9be0de6cf49e536ce1851f987bd21a43b771b09473c3549a6c853db37c1c"
dependencies = [ dependencies = [
"futures-core", "futures-core",
"futures-util", "futures-util",
"pin-project",
"pin-project-lite", "pin-project-lite",
"sync_wrapper",
"tokio", "tokio",
"tower-layer", "tower-layer",
"tower-service", "tower-service",
@ -1296,10 +1325,25 @@ dependencies = [
] ]
[[package]] [[package]]
name = "tower-http" name = "tower"
version = "0.6.4" version = "0.5.2"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "0fdb0c213ca27a9f57ab69ddb290fd80d970922355b83ae380b395d3986b8a2e" checksum = "d039ad9159c98b70ecfd540b2573b97f7f52c3e8d9f8ad57a24b916a536975f9"
dependencies = [
"futures-core",
"futures-util",
"pin-project-lite",
"sync_wrapper 1.0.1",
"tokio",
"tower-layer",
"tower-service",
]
[[package]]
name = "tower-http"
version = "0.6.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5cc2d9e086a412a451384326f521c8123a99a466b329941a9403696bff9b0da2"
dependencies = [ dependencies = [
"bitflags", "bitflags",
"bytes", "bytes",
@ -1308,7 +1352,7 @@ dependencies = [
"http-body", "http-body",
"iri-string", "iri-string",
"pin-project-lite", "pin-project-lite",
"tower", "tower 0.5.2",
"tower-layer", "tower-layer",
"tower-service", "tower-service",
] ]

View file

@ -6,7 +6,7 @@ edition = "2021"
license = "EUPL-1.2" license = "EUPL-1.2"
[dependencies] [dependencies]
axum = "0.8.0" axum = "0.7.5"
color-eyre = "0.6.3" color-eyre = "0.6.3"
mlua = { version = "0.10.0", features = ["luajit", "macros", "serialize", "vendored"] } mlua = { version = "0.10.0", features = ["luajit", "macros", "serialize", "vendored"] }
reqwest = { version = "0.12.7", default-features = false, features = ["json", "rustls-tls"] } reqwest = { version = "0.12.7", default-features = false, features = ["json", "rustls-tls"] }

View file

@ -4,14 +4,14 @@ use mlua::IntoLua;
use serde::{Deserialize, Serialize}; use serde::{Deserialize, Serialize};
/// Converts a `serde_json::Value` to a `mlua::Value`. /// Converts a `serde_json::Value` to a `mlua::Value`.
fn json_to_lua(value: serde_json::Value, lua: &mlua::Lua) -> mlua::Result<mlua::Value<'_>> { fn json_to_lua(value: serde_json::Value, lua: &mlua::Lua) -> mlua::Result<mlua::Value> {
match value { match value {
serde_json::Value::Null => Ok(mlua::Value::Nil), serde_json::Value::Null => Ok(mlua::Value::Nil),
serde_json::Value::Bool(value) => Ok(mlua::Value::Boolean(value)), serde_json::Value::Bool(value) => Ok(mlua::Value::Boolean(value)),
serde_json::Value::Number(value) => match value.as_f64() { serde_json::Value::Number(value) => match value.as_f64() {
Some(number) => Ok(mlua::Value::Number(number)), Some(number) => Ok(mlua::Value::Number(number)),
None => Err(mlua::Error::ToLuaConversionError { None => Err(mlua::Error::ToLuaConversionError {
from: "serde_json::Value::Number", from: String::from("serde_json::Value::Number"),
to: "Number", to: "Number",
message: Some("Number cannot be represented by a floating-point type".into()), message: Some("Number cannot be represented by a floating-point type".into()),
}), }),
@ -52,8 +52,8 @@ pub(crate) struct ApiEvent {
pub status: u16, pub status: u16,
} }
impl<'lua> IntoLua<'lua> for ApiEvent { impl IntoLua for ApiEvent {
fn into_lua(self, lua: &'lua mlua::Lua) -> mlua::Result<mlua::Value<'lua>> { fn into_lua(self, lua: &mlua::Lua) -> mlua::Result<mlua::Value> {
let headers = lua.create_table_with_capacity(0, self.headers.len())?; let headers = lua.create_table_with_capacity(0, self.headers.len())?;
for (k, v) in self.headers { for (k, v) in self.headers {
let k = lua.create_string(k)?; let k = lua.create_string(k)?;

View file

@ -1,6 +1,6 @@
use std::sync::mpsc::Receiver; use std::sync::mpsc::Receiver;
use color_eyre::Result; use color_eyre::{eyre, Result};
use mlua::{Function, IntoLua as _, Lua, LuaSerdeExt}; use mlua::{Function, IntoLua as _, Lua, LuaSerdeExt};
use tokio::sync::mpsc::UnboundedSender; use tokio::sync::mpsc::UnboundedSender;
@ -96,23 +96,23 @@ pub fn worker(
Event::Webhook(data) => { Event::Webhook(data) => {
tracing::trace!(id = data.topic, "Received webhook event"); tracing::trace!(id = data.topic, "Received webhook event");
let data = lua.to_value(&data)?; let data = lua.to_value(&data)?;
event_fn.call::<_, ()>(("webhook", data))? event_fn.call(("webhook", data))?
} }
Event::Api(data) => { Event::Api(data) => {
tracing::trace!(id = data.id, status = data.status, "Received api event"); tracing::trace!(id = data.id, status = data.status, "Received api event");
let data = data.into_lua(&lua)?; let data = data.into_lua(&lua)?;
event_fn.call::<_, ()>(("api", data))? event_fn.call(("api", data))?
} }
Event::Error(data) => { Event::Error(data) => {
tracing::trace!(id = data.id, message = data.message, "Received error event"); tracing::trace!(id = data.id, message = data.message, "Received error event");
let data = lua.to_value(&data)?; let data = lua.to_value(&data)?;
event_fn.call::<_, ()>(("error", data))? event_fn.call(("error", data))?
} }
} }
} }
Ok(()) Ok(())
})?; }).map_err(|e| eyre::eyre!("{:?}", e))?;
Ok(()) Ok(())
} }