diff --git a/.woodpecker.yml b/.woodpecker.yml index c0c506f..b76be6e 100644 --- a/.woodpecker.yml +++ b/.woodpecker.yml @@ -6,11 +6,14 @@ when: steps: - name: fmt - image: rust:1.94-bookworm + image: rust:1.95-bookworm environment: GIT_AUTH_TOKEN: from_secret: git_auth_token + RUSTC_WRAPPER: sccache + SCCACHE_REDIS: "redis://100.92.54.45:6380" commands: + - curl -sSfL "https://github.com/mozilla/sccache/releases/download/v0.8.2/sccache-v0.8.2-x86_64-unknown-linux-musl.tar.gz" | tar -xz -C /tmp && mv /tmp/sccache-v0.8.2-x86_64-unknown-linux-musl/sccache /usr/local/bin/sccache - git config --global url."http://x-access-token:$GIT_AUTH_TOKEN@100.92.54.45:3002/".insteadOf "http://100.92.54.45:3002/" - printf '[registries.forgejo]\nindex = "sparse+https://repo.indexarr.net/api/packages/indexarr/cargo/"\ncredential-provider = "cargo:token"\n\n[registry]\ndefault = "forgejo"\n' > $CARGO_HOME/config.toml - printf '[registries.forgejo]\ntoken = "Bearer %s"\n' "$GIT_AUTH_TOKEN" > $CARGO_HOME/credentials.toml @@ -18,33 +21,42 @@ steps: - cargo fmt --all -- --check - name: check - image: rust:1.94-bookworm + image: rust:1.95-bookworm environment: GIT_AUTH_TOKEN: from_secret: git_auth_token + RUSTC_WRAPPER: sccache + SCCACHE_REDIS: "redis://100.92.54.45:6380" commands: + - curl -sSfL "https://github.com/mozilla/sccache/releases/download/v0.8.2/sccache-v0.8.2-x86_64-unknown-linux-musl.tar.gz" | tar -xz -C /tmp && mv /tmp/sccache-v0.8.2-x86_64-unknown-linux-musl/sccache /usr/local/bin/sccache - git config --global url."http://x-access-token:$GIT_AUTH_TOKEN@100.92.54.45:3002/".insteadOf "http://100.92.54.45:3002/" - printf '[registries.forgejo]\nindex = "sparse+https://repo.indexarr.net/api/packages/indexarr/cargo/"\ncredential-provider = "cargo:token"\n\n[registry]\ndefault = "forgejo"\n' > $CARGO_HOME/config.toml - printf '[registries.forgejo]\ntoken = "Bearer %s"\n' "$GIT_AUTH_TOKEN" > $CARGO_HOME/credentials.toml - cargo check --workspace - name: test - image: rust:1.94-bookworm + image: rust:1.95-bookworm environment: GIT_AUTH_TOKEN: from_secret: git_auth_token + RUSTC_WRAPPER: sccache + SCCACHE_REDIS: "redis://100.92.54.45:6380" commands: + - curl -sSfL "https://github.com/mozilla/sccache/releases/download/v0.8.2/sccache-v0.8.2-x86_64-unknown-linux-musl.tar.gz" | tar -xz -C /tmp && mv /tmp/sccache-v0.8.2-x86_64-unknown-linux-musl/sccache /usr/local/bin/sccache - git config --global url."http://x-access-token:$GIT_AUTH_TOKEN@100.92.54.45:3002/".insteadOf "http://100.92.54.45:3002/" - printf '[registries.forgejo]\nindex = "sparse+https://repo.indexarr.net/api/packages/indexarr/cargo/"\ncredential-provider = "cargo:token"\n\n[registry]\ndefault = "forgejo"\n' > $CARGO_HOME/config.toml - printf '[registries.forgejo]\ntoken = "Bearer %s"\n' "$GIT_AUTH_TOKEN" > $CARGO_HOME/credentials.toml - cargo test --workspace - name: clippy - image: rust:1.94-bookworm + image: rust:1.95-bookworm environment: GIT_AUTH_TOKEN: from_secret: git_auth_token + RUSTC_WRAPPER: sccache + SCCACHE_REDIS: "redis://100.92.54.45:6380" commands: + - curl -sSfL "https://github.com/mozilla/sccache/releases/download/v0.8.2/sccache-v0.8.2-x86_64-unknown-linux-musl.tar.gz" | tar -xz -C /tmp && mv /tmp/sccache-v0.8.2-x86_64-unknown-linux-musl/sccache /usr/local/bin/sccache - git config --global url."http://x-access-token:$GIT_AUTH_TOKEN@100.92.54.45:3002/".insteadOf "http://100.92.54.45:3002/" - printf '[registries.forgejo]\nindex = "sparse+https://repo.indexarr.net/api/packages/indexarr/cargo/"\ncredential-provider = "cargo:token"\n\n[registry]\ndefault = "forgejo"\n' > $CARGO_HOME/config.toml - printf '[registries.forgejo]\ntoken = "Bearer %s"\n' "$GIT_AUTH_TOKEN" > $CARGO_HOME/credentials.toml @@ -52,7 +64,7 @@ steps: - cargo clippy --workspace -- -D warnings - name: publish - image: rust:1.94-bookworm + image: rust:1.95-bookworm environment: GIT_AUTH_TOKEN: from_secret: git_auth_token @@ -64,22 +76,6 @@ steps: - event: push branch: main - - name: trigger-renovate - image: alpine/curl - environment: - WOODPECKER_TOKEN: - from_secret: woodpecker_token - commands: - - | - curl -sf -X POST \ - "https://ci.indexarr.net/api/repos/indexarr/renovate/pipelines" \ - -H "Authorization: Bearer $WOODPECKER_TOKEN" \ - -H "Content-Type: application/json" \ - -d '{"branch":"main"}' - when: - - event: push - branch: main - - name: discord-success image: alpine/curl environment: @@ -89,7 +85,7 @@ steps: - | curl -s -X POST "$DISCORD_WEBHOOK_URL" \ -H "Content-Type: application/json" \ - -d "{\"embeds\":[{\"title\":\"librtbit-bencode published\",\"description\":\"Published to Forgejo registry. Renovate scan triggered.\",\"color\":3066993}]}" + -d "{\"embeds\":[{\"title\":\"librtbit-bencode published\",\"description\":\"Published to Forgejo registry.\",\"color\":3066993}]}" when: - event: push branch: main diff --git a/Cargo.lock b/Cargo.lock index d40373c..23e7c9a 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -16,18 +16,18 @@ checksum = "7c02d123df017efcdfbd739ef81735b36c5ba83ec3c59c80a9d7ecc718f92e50" [[package]] name = "atoi" -version = "2.0.0" +version = "3.0.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f28d99ec8bfea296261ca1af174f24225171fea9664ba9003cbebee704810528" +checksum = "4652e33138d8d9c774c9697a351b019deb33737812be629603434407f288a323" dependencies = [ "num-traits", ] [[package]] name = "autocfg" -version = "1.5.0" +version = "1.5.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c08606f8c3cbf4ce6ec8e28fb0014a2c086708fe954eaa885384a6165172e7e8" +checksum = "f2032f911046de80f0a198e0901378627c33f59ea0ac00e363d481118bd70a53" [[package]] name = "bytes" @@ -37,7 +37,7 @@ checksum = "1e748733b7cbc798e1434b6ac524f0c1ff2ab456fe201501e6497c8417a4fc33" [[package]] name = "librtbit-bencode" -version = "0.1.1" +version = "0.1.5" dependencies = [ "anyhow", "arrayvec", @@ -52,9 +52,8 @@ dependencies = [ [[package]] name = "librtbit-buffers" -version = "0.1.0" -source = "sparse+https://repo.indexarr.net/api/packages/indexarr/cargo/" -checksum = "300b65a47ed968047e9087d97d9b7a240478fc0a0a77b65b9d10f27ffa2cd25e" +version = "0.1.2" +source = "git+https://github.com/TheDancingDeveloper-org/librtbit-buffers.git?branch=migration%2Fgithub-native-source#ac4adf618daa0b69ba7799233d469f105c47d75a" dependencies = [ "bytes", "librtbit-clone-to-owned", @@ -64,9 +63,8 @@ dependencies = [ [[package]] name = "librtbit-clone-to-owned" -version = "0.1.0" -source = "sparse+https://repo.indexarr.net/api/packages/indexarr/cargo/" -checksum = "2d988ba16e404bfad37f12b042ca399a089715e1fab4c1e5e80267d3cdd82e38" +version = "0.1.1" +source = "git+https://github.com/TheDancingDeveloper-org/librtbit-clone-to-owned.git#6944f73c91e9a4cc3be7694f864c5c06012066fc" dependencies = [ "bytes", ] diff --git a/Cargo.toml b/Cargo.toml index cec5f3d..6555a0d 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -1,6 +1,6 @@ [package] name = "librtbit-bencode" -version = "0.1.1" +version = "0.1.5" edition = "2024" description = "Bencode serialization and deserialization using Serde" license = "MIT" @@ -9,10 +9,10 @@ repository = "https://github.com/AusAgentSmith-org/librtbit-bencode" [dependencies] serde = { version = "1", features = ["derive"] } serde_derive = "1" -buffers = { version = "0.1.1", package = "librtbit-buffers" } -clone_to_owned = { version = "0.1.1", package = "librtbit-clone-to-owned" } +buffers = { git = "https://github.com/TheDancingDeveloper-org/librtbit-buffers.git", branch = "migration/github-native-source", package = "librtbit-buffers" } +clone_to_owned = { git = "https://github.com/TheDancingDeveloper-org/librtbit-clone-to-owned.git", package = "librtbit-clone-to-owned" } bytes = "1" -atoi = "2" +atoi = "3" thiserror = "2" arrayvec = "0.7" anyhow = "1" diff --git a/src/deserialize.rs b/src/deserialize.rs index e6dffe3..ea00498 100644 --- a/src/deserialize.rs +++ b/src/deserialize.rs @@ -1,7 +1,7 @@ use std::marker::PhantomData; use arrayvec::ArrayVec; -use atoi::{FromRadix10, FromRadix10Signed}; +use atoi::{FromRadix10, FromRadix10Signed, Integer}; use buffers::ByteBuf; use clone_to_owned::CloneToOwned; use serde::{Deserialize, Serialize, forward_to_deserialize_any}; @@ -53,8 +53,8 @@ impl<'de> BencodeDeserializer<'de> { } fn parse_bytes(&mut self) -> Result<&'de [u8], Error> { - let b = match usize::from_radix_10(self.buf) { - (v, len) if len > 0 && self.buf.get(len) == Some(&b':') => { + let b = match Integer::::from_radix_10(self.buf) { + (Integer(v), len) if len > 0 && self.buf.get(len) == Some(&b':') => { self.buf = unsafe { self.buf.get_unchecked(len + 1..) }; let (bytes, rest) = self.buf.split_at_checked(v).ok_or(Error::Eof)?; self.buf = rest;