From e21cbd1f63448308b85934c93fd54f929e3373f0 Mon Sep 17 00:00:00 2001 From: Jonatan Czarniecki Date: Sat, 7 Jun 2025 16:11:48 +0200 Subject: [PATCH] rework the build system - use rustls for reqwest, so we don't need to compile OpenSSL - use better defaults for build arguments in Dockerfile - add Continuous Integration workflow for master branch and it's pull requests - add Release workflow for tags matching SemVer - add release template for automatic release notes generation with GH CLI - remove old and unused assets under .github --- .github/actions/build/action.yml | 48 ++ .github/actions/dependencies/action.yml | 32 + .github/release-body.md | 12 - .github/release.yml | 17 + .github/scripts/compress-artifact.sh | 8 + .github/scripts/package-artifacts.sh | 12 + .github/workflows/ci.yml | 71 +++ .github/workflows/dev-release.yml | 44 -- .github/workflows/release.yml | 241 ++++---- .github/workflows/rust.yml | 24 - Cargo.lock | 742 +++++------------------- Cargo.toml | 5 +- Dockerfile | 16 +- 13 files changed, 462 insertions(+), 810 deletions(-) create mode 100644 .github/actions/build/action.yml create mode 100644 .github/actions/dependencies/action.yml delete mode 100644 .github/release-body.md create mode 100644 .github/release.yml create mode 100755 .github/scripts/compress-artifact.sh create mode 100755 .github/scripts/package-artifacts.sh create mode 100644 .github/workflows/ci.yml delete mode 100644 .github/workflows/dev-release.yml delete mode 100644 .github/workflows/rust.yml diff --git a/.github/actions/build/action.yml b/.github/actions/build/action.yml new file mode 100644 index 0000000..318b333 --- /dev/null +++ b/.github/actions/build/action.yml @@ -0,0 +1,48 @@ +name: Build project +description: Builds the project for specified targets using cargo-zigbuild. + +inputs: + targets: + description: A comma-separated list of Rust targets. + default: x86_64-unknown-linux-gnu,aarch64-unknown-linux-gnu,x86_64-pc-windows-gnu + lint: + description: A boolean indicating if linting (cargo-fmt, clippy) should be run + default: true + test: + description: A boolean indicating if tests should be run + default: true + +runs: + using: composite + steps: + + - name: Convert input targets to Bash array + shell: bash + run: | + readarray -d $'\0' -t targets < <(awk -F, '{ for (i = 1; i <= NF; i++) printf "--target\0%s\0", $i }' <<< "${{ inputs.targets }}") + declare -p targets > /tmp/targets.sh + + - name: Check with cargo-fmt + if: inputs.lint == true + shell: sh + run: cargo fmt -v --all -- --check + + - name: Run Clippy + if: inputs.lint == true + shell: bash + run: | + . /tmp/targets.sh + cargo-zigbuild clippy -v --all-targets "${targets[@]}" -- -D warnings + + - name: Build with cargo-zigbuild + shell: bash + run: | + . /tmp/targets.sh + cargo-zigbuild build -v -r --bin sculptor "${targets[@]}" + + - name: Test with cargo-zigbuild + shell: bash + if: inputs.test == true + run: | + . /tmp/targets.sh + cargo-zigbuild test -v -r "${targets[@]}" diff --git a/.github/actions/dependencies/action.yml b/.github/actions/dependencies/action.yml new file mode 100644 index 0000000..5095cce --- /dev/null +++ b/.github/actions/dependencies/action.yml @@ -0,0 +1,32 @@ +name: Install cargo-zigbuild +description: Installs cargo-zigbuild and its dependencies + +inputs: + zig-version: + description: Version of Zig to install + default: 0.14.1 + +runs: + using: composite + steps: + + - name: Install Zig + shell: bash + run: | + ZIG_VERSION="${{ inputs.zig-version }}" + [ "$RUNNER_ARCH" == "X64" ] && ZIG_ARCH="x86_64" || ZIG_ARCH="aarch64" + wget -q "https://ziglang.org/download/${ZIG_VERSION}/zig-${ZIG_ARCH}-linux-${ZIG_VERSION}.tar.xz" \ + -O /tmp/zig.tar.xz + + sudo tar -xJf /tmp/zig.tar.xz -C / \ + --transform='s|^[^/]+/zig$|usr/local/bin/zig|x' \ + --transform='s|^[^/]+/lib|usr/local/lib/zig|x' \ + --transform='s|^[^/]+/doc|usr/local/share/doc/zig|x' \ + --transform='s|^[^/]+/LICENSE$|usr/local/share/doc/zig/copyright|x' \ + --transform='s|^[^/]+/README.md$|usr/local/share/doc/zig/README.md|x' \ + --wildcards \ + "*/"{zig,lib,doc,LICENSE,README.md} + + - name: Install cargo-zigbuild + shell: sh + run: cargo install cargo-zigbuild \ No newline at end of file diff --git a/.github/release-body.md b/.github/release-body.md deleted file mode 100644 index 522418f..0000000 --- a/.github/release-body.md +++ /dev/null @@ -1,12 +0,0 @@ -## Release (✧ω✧) - -> [!CAUTION] -> **Update your Config.toml according to the example in the repository!** - -What's added: -- Added support for **Assets**! As well as their automatic update from Figura repository! -- WebSocket reworked! *No more panics!* -- Reworked auto-update of conf files. -- Fixed avatar size limits - -**Full Changelog**: https://github.com/shiroyashik/sculptor/compare/v0.3.1...v0.4.0 \ No newline at end of file diff --git a/.github/release.yml b/.github/release.yml new file mode 100644 index 0000000..4e8365a --- /dev/null +++ b/.github/release.yml @@ -0,0 +1,17 @@ +changelog: + exclude: + labels: + - ignore-for-release + categories: + - title: Breaking Changes 🛠 + labels: + - breaking-change + - title: New Features 🎉 + labels: + - enhancement + - title: Bug fixes 🐛 + labels: + - bug + - title: Other Changes 🔄 + labels: + - "*" \ No newline at end of file diff --git a/.github/scripts/compress-artifact.sh b/.github/scripts/compress-artifact.sh new file mode 100755 index 0000000..db4f9cb --- /dev/null +++ b/.github/scripts/compress-artifact.sh @@ -0,0 +1,8 @@ +#!/bin/bash +BINARY_FILE="target/$1/release/sculptor" +COMMON_FILES=("Config.example.toml") +ARTIFACT_OUTPUT="${OUTPUT_DIR}/sculptor-$2-$3" +if [ "$2" = "windows" ] +then zip -j "${ARTIFACT_OUTPUT}.zip" "${BINARY_FILE}.exe" "${COMMON_FILES[@]}" +else tar --transform 's|^.*/||' -czf "${ARTIFACT_OUTPUT}.tar.gz" "$BINARY_FILE" "${COMMON_FILES[@]}" +fi \ No newline at end of file diff --git a/.github/scripts/package-artifacts.sh b/.github/scripts/package-artifacts.sh new file mode 100755 index 0000000..4b380bc --- /dev/null +++ b/.github/scripts/package-artifacts.sh @@ -0,0 +1,12 @@ +#!/bin/bash +set -euo pipefail + +export OUTPUT_DIR +mkdir -p "$OUTPUT_DIR" + +printenv CARGO_BUILD_TARGETS | awk -F, '{ + for (i = 1; i <= NF; i++) + if (match($i, /^([^-]+)(-[^-]+)*-(linux|windows|darwin)(-[^-]+)*$/, matches)) + printf "%s\0%s\0%s\0", $i, matches[3], matches[1] + else print "DEBUG: awk: No regex match for field index " i ": \047" $i "\047" > /dev/stderr +}' | xargs -0 -n 3 "$(dirname -- "$(readlink -f -- "$0")")/compress-artifact.sh" \ No newline at end of file diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..b365bbc --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,71 @@ +name: Continuous Integration + +on: + push: + branches: [ "master" ] + paths: + - src + - Cargo* + - Dockerfile + pull_request: + branches: [ "master" ] + paths: + - src + - Cargo* + - Dockerfile + +permissions: + contents: read + +env: + ZIG_VERSION: 0.14.1 + CARGO_TERM_COLOR: always + CARGO_BUILD_TARGETS: x86_64-unknown-linux-gnu,aarch64-unknown-linux-gnu,x86_64-pc-windows-gnu + +jobs: + build: + name: Build, lint and test + runs-on: ubuntu-latest + env: + OUTPUT_DIR: target/output + strategy: + matrix: + toolchain: + - 1.87 + # - stable + # - nightly + steps: + + - name: Checkout the code + uses: actions/checkout@v4 + + - name: Use build cache + uses: Swatinem/rust-cache@v2 + with: + prefix-key: "cargo-v0" + cache-all-crates: true + + - name: Set up Rust toolchain + uses: dtolnay/rust-toolchain@master + with: + toolchain: ${{ matrix.toolchain }} + targets: ${{ env.CARGO_BUILD_TARGETS }} + components: clippy, rustfmt + + - name: Install the build dependencies + uses: ./.github/actions/dependencies + with: + zig-version: ${{ env.ZIG_VERSION }} + + - name: Build the project + uses: ./.github/actions/build + with: + targets: ${{ env.CARGO_BUILD_TARGETS }} + + - name: Package the artifacts + run: ./.github/scripts/package-artifacts.sh + + - name: Upload the artifacts + uses: actions/upload-artifact@v4 + with: + path: ${{ env.OUTPUT_DIR }}/* \ No newline at end of file diff --git a/.github/workflows/dev-release.yml b/.github/workflows/dev-release.yml deleted file mode 100644 index d0e77aa..0000000 --- a/.github/workflows/dev-release.yml +++ /dev/null @@ -1,44 +0,0 @@ -name: Push Dev - -on: - push: - branches: - - "**" - tags-ignore: - - '**' - -jobs: - docker: - runs-on: ubuntu-latest - steps: - # - name: Checkout code - # uses: actions/checkout@v4 - - - name: Set up Docker Buildx - uses: docker/setup-buildx-action@v3 - - # - name: Login to Docker Hub - # uses: docker/login-action@v3 - # with: - # username: ${{ vars.DOCKERHUB_USERNAME }} - # password: ${{ secrets.DOCKERHUB_TOKEN }} - - - name: Login to GitHub Container Registry - uses: docker/login-action@v3 - with: - registry: ghcr.io - username: ${{ github.repository_owner }} - password: ${{ secrets.GITHUB_TOKEN }} - - - name: Get short SHA - id: short_sha - run: echo "sha=$(echo ${GITHUB_SHA} | cut -c1-7)" >> $GITHUB_OUTPUT - - - name: Build and push - uses: docker/build-push-action@v6 - with: - push: true - # context: . - tags: ghcr.io/${{ github.repository_owner }}/sculptor:${{ steps.short_sha.outputs.sha }} - cache-from: type=registry,ref=ghcr.io/${{ github.repository_owner }}/sculptor:buildcache - cache-to: type=registry,ref=ghcr.io/${{ github.repository_owner }}/sculptor:buildcache,mode=max \ No newline at end of file diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml index 590831f..a864454 100644 --- a/.github/workflows/release.yml +++ b/.github/workflows/release.yml @@ -1,145 +1,154 @@ -# Stolen from https://github.com/mrjackwills/oxker :D -name: Release CI +name: Release +run-name: Release ${{ github.ref_name }} + on: push: tags: - - "v[0-9]+.[0-9]+.[0-9]+" + - 'v*.*.*' + +permissions: + contents: write + packages: write + +env: + RUST_VERSION: 1.87 + ZIG_VERSION: 0.14.1 + ALPINE_VERSION: 3.22 + CARGO_TERM_COLOR: always + CARGO_BUILD_TARGETS: x86_64-unknown-linux-gnu,aarch64-unknown-linux-gnu,x86_64-pc-windows-gnu jobs: - ################################################# - ## Cross platform binary build for release page # - ################################################# - - cross_platform_build: - strategy: - matrix: - include: - - target: x86_64-unknown-linux-gnu - output_name: linux_x86_64.tar.gz - - - target: x86_64-pc-windows-gnu - output_name: windows_x86_64.zip - + build-binary: + name: Build binaries and upload them as artifacts runs-on: ubuntu-latest + env: + OUTPUT_DIR: target/output + outputs: + binary-artifact-id: ${{ steps.artifact-upload.outputs.artifact-id }} steps: - - name: Checkout code + + - name: Checkout the code uses: actions/checkout@v4 - # Install stable rust, and associated tools - - name: Install rust - uses: dtolnay/rust-toolchain@stable + - name: Use build cache + uses: Swatinem/rust-cache@v2 + with: + prefix-key: "cargo-v0" + cache-all-crates: true - # Install cross-rs - - name: Install cross - run: cargo install cross --git https://github.com/cross-rs/cross + - name: Set up Rust toolchain + uses: dtolnay/rust-toolchain@master + with: + toolchain: ${{ env.RUST_VERSION }} + targets: ${{ env.CARGO_BUILD_TARGETS }} + # components: clippy, rustfmt - # Build binary - - name: Build - run: CROSS_NO_WARNINGS=0 cross build --target ${{ matrix.target }} --release - - # Create necessary files and directories - - name: Create necessary files - run: | - mkdir -p target/output - cp Config.example.toml target/output/Config.toml + - name: Install the build dependencies + uses: ./.github/actions/dependencies + with: + zig-version: ${{ env.ZIG_VERSION }} - # Compress the output | Windows - - name: Compress | windows - if: matrix.target == 'x86_64-pc-windows-gnu' - run: | - cp target/${{ matrix.target }}/release/sculptor.exe target/output - (cd target/output; zip "../../sculptor_${{ matrix.output_name }}" ./*) - # Compress the output | Linux - - name: Compress | linux - if: matrix.target != 'x86_64-pc-windows-gnu' - run: | - cp target/${{ matrix.target }}/release/sculptor target/output - tar -czvf "./sculptor_${{ matrix.output_name }}" -C "target/output" . + - name: Build the project + uses: ./.github/actions/build + with: + targets: ${{ env.CARGO_BUILD_TARGETS }} + lint: false - # Upload output for release page - - name: Upload Artifacts + - name: Package the artifacts + run: ./.github/scripts/package-artifacts.sh + + - name: Upload artifact + id: artifact-upload uses: actions/upload-artifact@v4 with: - if-no-files-found: error - name: ${{ matrix.target }} - path: sculptor_${{ matrix.output_name }} - retention-days: 1 + path: ${{ env.OUTPUT_DIR }}/* + name: binaries-${{ github.ref_name }} - ################### - ## Create release # - ################### - - create_release: - needs: [cross_platform_build] + build-image: + name: Build image and push to GHCR runs-on: ubuntu-latest steps: - - name: Checkout code + + - name: Checkout the code uses: actions/checkout@v4 - - name: Setup | Artifacts - uses: actions/download-artifact@v4 - - - name: Update Release - uses: ncipollo/release-action@v1 - with: - makeLatest: true - name: ${{ github.ref_name }} - tag: ${{ github.ref }} - bodyFile: ".github/release-body.md" - token: ${{ secrets.GITHUB_TOKEN }} - artifacts: | - **/sculptor_*.zip - **/sculptor_*.tar.gz - ################## - ## Cargo publish # - ################## - - # cargo_publish: - # needs: [create_release] - # runs-on: ubuntu-latest - # steps: - # - name: Checkout - # uses: actions/checkout@v4 - - # - name: publish to crates.io - # uses: katyo/publish-crates@v2 - # with: - # registry-token: ${{ secrets.CRATES_IO_TOKEN }} - - ######################################### - ## Build images for Dockerhub & ghcr.io # - ######################################### - - image_build: - needs: [create_release] - runs-on: ubuntu-latest - steps: - - name: Checkout code - uses: actions/checkout@v4 - - - name: Login to GitHub Container Registry - uses: docker/login-action@v3 - with: - registry: ghcr.io - username: ${{ github.repository_owner }} - password: ${{ secrets.GITHUB_TOKEN }} - # - name: Login to DockerHub # uses: docker/login-action@v3 # with: # username: ${{ secrets.DOCKERHUB_USERNAME }} # password: ${{ secrets.DOCKERHUB_TOKEN }} - - uses: docker/setup-buildx-action@v3 - id: buildx + # - name: Login to GitHub Container Registry + # uses: docker/login-action@v3 + # with: + # registry: ghcr.io + # username: ${{ github.repository_owner }} + # password: ${{ secrets.GITHUB_TOKEN }} + + # - name: Set up QEMU + # uses: docker/setup-qemu-action@v3 + + - name: Set up buildx + uses: docker/setup-buildx-action@v3 + + - name: Build and push + uses: docker/build-push-action@v6 with: - install: true - - name: Build for Dockerhub & ghcr.io + context: . + file: ./Dockerfile + build-args: | + ALPINE_VERSION + RUST_VERSION + platforms: linux/amd64,linux/arm64 + # push: true + tags: | + ghcr.io/${{ github.repository_owner }}/sculptor:latest + ghcr.io/${{ github.repository_owner }}/sculptor:${{ github.ref_name }} + # If we were to push to DockerHub: + # ${{ github.repository_owner }}/sculptor:latest + # ${{ github.repository_owner }}/sculptor:${{ github.ref_name }} + provenance: false + sbom: false + cache-from: type=gha + cache-to: type=gha,mode=max + + create-release: + name: Create GitHub release + needs: + - build-binary + - build-image + runs-on: ubuntu-latest + steps: + + - name: Checkout the code + uses: actions/checkout@v4 + with: + fetch-tags: true + ref: ${{ github.ref }} + + - name: Download the artifacts + uses: actions/download-artifact@v4 + with: + artifact-ids: ${{ needs.build-binary.outputs.binary-artifact-id }} + + - name: Debug tag information + shell: bash run: | - docker build --platform linux/amd64 \ - -t ghcr.io/${{ github.repository_owner }}/sculptor:latest \ - -t ghcr.io/${{ github.repository_owner }}/sculptor:${{ github.ref_name }} \ - --provenance=false --sbom=false \ - --push \ - -f Dockerfile . \ No newline at end of file + echo "Workflow triggered by GITHUB_REF_NAME: ${{ github.ref_name }}" + echo "--- Listing all local tags ---" + git tag -l + echo "--- Showing details for tag '${{ github.ref_name }}' ---" + git show ${{ github.ref_name }} || echo "Error: Tag '${{ github.ref_name }}' not found or 'git show' failed." + echo "--------------------------------" + + - name: Create release + env: + GH_TOKEN: ${{ github.token }} + run: | + gh release create ${{ github.ref_name }} \ + --verify-tag \ + --generate-notes \ + --latest \ + --draft \ + binaries-${{ github.ref_name }}/* \ No newline at end of file diff --git a/.github/workflows/rust.yml b/.github/workflows/rust.yml deleted file mode 100644 index dcacd7e..0000000 --- a/.github/workflows/rust.yml +++ /dev/null @@ -1,24 +0,0 @@ -name: Rust - -on: workflow_dispatch - # push: - # branches: [ "master" ] - # pull_request: - # branches: [ "master" ] - -env: - CARGO_TERM_COLOR: always - -jobs: - build: - - runs-on: ubuntu-latest - - steps: - - uses: actions/checkout@v4 - - - name: Build - run: cargo build --verbose - - - name: Run tests - run: cargo test --verbose diff --git a/Cargo.lock b/Cargo.lock index ccfa56b..c46e30b 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -79,17 +79,6 @@ version = "1.1.2" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1505bd5d3d116872e7271a6d4e16d81d0c8570876c8de68093a09ac269d8aac0" -[[package]] -name = "atty" -version = "0.2.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d9b39be18770d11421cdb1b9947a45dd3f37e93092cbf377614828a319d5fee8" -dependencies = [ - "hermit-abi", - "libc", - "winapi", -] - [[package]] name = "autocfg" version = "1.4.0" @@ -162,7 +151,7 @@ checksum = "604fde5e028fea851ce1d8570bbdc034bec850d157f7569d10f347d06808c05c" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn", ] [[package]] @@ -294,80 +283,12 @@ dependencies = [ "inout", ] -[[package]] -name = "clap" -version = "3.2.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "4ea181bf566f71cb9a5d17a59e1871af638180a18fb0035c92ae62b705207123" -dependencies = [ - "atty", - "bitflags 1.3.2", - "clap_derive", - "clap_lex", - "indexmap 1.9.3", - "once_cell", - "strsim", - "termcolor", - "textwrap", -] - -[[package]] -name = "clap_derive" -version = "3.2.25" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ae6371b8bdc8b7d3959e9cf7b22d4435ef3e79e138688421ec654acf8c81b008" -dependencies = [ - "heck", - "proc-macro-error", - "proc-macro2", - "quote", - "syn 1.0.109", -] - -[[package]] -name = "clap_lex" -version = "0.2.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2850f2f5a82cbf437dd5af4d49848fbdfc27c157c3d010345776f952765261c5" -dependencies = [ - "os_str_bytes", -] - -[[package]] -name = "color-eyre" -version = "0.6.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "55146f5e46f237f7423d74111267d4597b59b0dad0ffaf7303bce9945d843ad5" -dependencies = [ - "backtrace", - "eyre", - "indenter", - "once_cell", - "owo-colors", -] - -[[package]] -name = "const-sha1" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fb58b6451e8c2a812ad979ed1d83378caa5e927eef2622017a45f251457c2c9d" - [[package]] name = "constant_time_eq" version = "0.3.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "7c74b8349d32d297c9134b8c88677813a227df8f779daa29bfc29c183fe3dca6" -[[package]] -name = "core-foundation" -version = "0.9.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "91e195e091a93c46f7102ec7818a2aa394e1e1771c3ab4825963fa03e45afb8f" -dependencies = [ - "core-foundation-sys", - "libc", -] - [[package]] name = "core-foundation-sys" version = "0.8.7" @@ -407,37 +328,6 @@ dependencies = [ "cfg-if", ] -[[package]] -name = "cross" -version = "0.2.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cc6abfd6b5130d5d470548ef0d04c9201805c3825b6e992009774c37738a954a" -dependencies = [ - "atty", - "clap", - "color-eyre", - "const-sha1", - "ctrlc", - "directories", - "dunce", - "eyre", - "home", - "libc", - "nix 0.24.3", - "owo-colors", - "rustc_version", - "serde", - "serde_ignored", - "serde_json", - "shell-escape", - "shell-words", - "tempfile", - "thiserror 1.0.69", - "toml 0.5.11", - "which", - "winapi", -] - [[package]] name = "crossbeam-channel" version = "0.5.14" @@ -463,16 +353,6 @@ dependencies = [ "typenum", ] -[[package]] -name = "ctrlc" -version = "3.4.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "90eeab0aa92f3f9b4e87f258c72b139c207d251f9cbc1080a0086b86a8870dd3" -dependencies = [ - "nix 0.29.0", - "windows-sys 0.59.0", -] - [[package]] name = "dashmap" version = "6.1.0" @@ -517,7 +397,7 @@ checksum = "30542c1ad912e0e3d22a1935c290e12e8a29d704a420177a31faad4a601a0800" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn", ] [[package]] @@ -531,26 +411,6 @@ dependencies = [ "subtle", ] -[[package]] -name = "directories" -version = "4.0.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f51c5d4ddabd36886dd3e1438cb358cdcb0d7c499cb99cb4ac2e38e18b5cb210" -dependencies = [ - "dirs-sys", -] - -[[package]] -name = "dirs-sys" -version = "0.3.7" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1b1d1d91c932ef41c0f2663aa8b0ca0342d444d842c06914aa0a7e352d0bada6" -dependencies = [ - "libc", - "redox_users", - "winapi", -] - [[package]] name = "displaydoc" version = "0.2.5" @@ -559,7 +419,7 @@ checksum = "97369cbbc041bc366949bc74d34658d6cda5621039731c6310521892a3a20ae0" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn", ] [[package]] @@ -568,27 +428,6 @@ version = "0.15.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "1aaf95b3e5c8f23aa320147307562d361db0ae0d51242340f558153b4eb2439b" -[[package]] -name = "dunce" -version = "1.0.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "92773504d58c093f6de2459af4af33faa518c13451eb8f2b5698ed3d36e7c813" - -[[package]] -name = "either" -version = "1.13.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "60b1af1c220855b6ceac025d3f6ecdd2b7c4894bfe9cd9bda4fbb4bc7c0d4cf0" - -[[package]] -name = "encoding_rs" -version = "0.8.35" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "75030f3c4f45dafd7586dd6780965a8c7e8e285a5ecb86713e63a79c5b2766f3" -dependencies = [ - "cfg-if", -] - [[package]] name = "equivalent" version = "1.0.2" @@ -605,16 +444,6 @@ dependencies = [ "windows-sys 0.59.0", ] -[[package]] -name = "eyre" -version = "0.6.12" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7cd915d99f24784cdc19fd37ef22b97e3ff0ae756c7e492e9fbfe897d61e2aec" -dependencies = [ - "indenter", - "once_cell", -] - [[package]] name = "faster-hex" version = "0.10.0" @@ -625,12 +454,6 @@ dependencies = [ "serde", ] -[[package]] -name = "fastrand" -version = "2.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "37909eebbb50d72f9059c3b6d82c0463f2ff062c9e95845c43a6c9c0355411be" - [[package]] name = "filetime" version = "0.2.25" @@ -659,21 +482,6 @@ version = "1.0.7" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "3f9eec918d3f24069decb9af1554cad7c880e2da24a9afd88aca000531ab82c1" -[[package]] -name = "foreign-types" -version = "0.3.2" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f6f339eb8adc052cd2ca78910fda869aefa38d22d5cb648e6485e4d3fc06f3b1" -dependencies = [ - "foreign-types-shared", -] - -[[package]] -name = "foreign-types-shared" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "00b0228411908ca8685dba7fc2cdd70ec9990a6e753e89b6ac91a84c40fbaf4b" - [[package]] name = "form_urlencoded" version = "1.2.1" @@ -759,8 +567,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "c4567c8db10ae91089c99af84c68c38da3ec2f087c3f82960bcdbf3656b6f4d7" dependencies = [ "cfg-if", + "js-sys", "libc", "wasi 0.11.0+wasi-snapshot-preview1", + "wasm-bindgen", ] [[package]] @@ -770,8 +580,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "43a49c392881ce6d5c3b8cb70f98717b7c07aabbdff06687b9030dbfbe2725f8" dependencies = [ "cfg-if", + "js-sys", "libc", "wasi 0.13.3+wasi-0.2.2", + "wasm-bindgen", "windows-targets", ] @@ -793,7 +605,7 @@ dependencies = [ "futures-core", "futures-sink", "http", - "indexmap 2.7.1", + "indexmap", "slab", "tokio", "tokio-util", @@ -809,12 +621,6 @@ dependencies = [ "byteorder", ] -[[package]] -name = "hashbrown" -version = "0.12.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888" - [[package]] name = "hashbrown" version = "0.14.5" @@ -837,21 +643,6 @@ dependencies = [ "stable_deref_trait", ] -[[package]] -name = "heck" -version = "0.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "95505c38b4572b2d910cecb0281560f54b440a19336cbbcb27bf6ce6adc6f5a8" - -[[package]] -name = "hermit-abi" -version = "0.1.19" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "62b467343b94ba476dcb2500d242dadbb39557df889310ac77c5d99100aaac33" -dependencies = [ - "libc", -] - [[package]] name = "hex" version = "0.4.3" @@ -867,15 +658,6 @@ dependencies = [ "digest", ] -[[package]] -name = "home" -version = "0.5.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "589533453244b0995c858700322199b2becb13b627df2851f64a2775d024abcf" -dependencies = [ - "windows-sys 0.59.0", -] - [[package]] name = "http" version = "1.2.0" @@ -958,22 +740,7 @@ dependencies = [ "tokio", "tokio-rustls", "tower-service", -] - -[[package]] -name = "hyper-tls" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "70206fc6890eaca9fde8a0bf71caa2ddfc9fe045ac9e5c70df101a7dbde866e0" -dependencies = [ - "bytes", - "http-body-util", - "hyper", - "hyper-util", - "native-tls", - "tokio", - "tokio-native-tls", - "tower-service", + "webpki-roots 0.26.11", ] [[package]] @@ -1133,7 +900,7 @@ checksum = "1ec89e9337638ecdc08744df490b221a7399bf8d164eb52a665454e60e075ad6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn", ] [[package]] @@ -1157,22 +924,6 @@ dependencies = [ "icu_properties", ] -[[package]] -name = "indenter" -version = "0.3.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ce23b50ad8242c51a442f3ff322d56b02f08852c77e4c0b4d3fd684abc89c683" - -[[package]] -name = "indexmap" -version = "1.9.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bd070e393353796e801d209ad339e89596eb4c8d430d18ede6a1cced8fafbd99" -dependencies = [ - "autocfg", - "hashbrown 0.12.3", -] - [[package]] name = "indexmap" version = "2.7.1" @@ -1219,12 +970,6 @@ version = "2.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "469fb0b9cefa57e3ef31275ee7cacb78f2fdca44e4765491884a2b119d4eb130" -[[package]] -name = "is_ci" -version = "1.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "7655c9839580ee829dfacba1d1278c2b7883e50a277ff7541299489d6bdfdc45" - [[package]] name = "itoa" version = "1.0.14" @@ -1327,6 +1072,12 @@ version = "0.4.26" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "30bde2b3dc3671ae49d8e2e9f044c7c005836e7a023ee57cffa25ab82764bb9e" +[[package]] +name = "lru-slab" +version = "0.1.2" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "112b39cec0b298b6c1999fee3e31427f74f676e4cb9879ed1a121b43661a4154" + [[package]] name = "lzma-rs" version = "0.3.0" @@ -1394,46 +1145,6 @@ dependencies = [ "windows-sys 0.52.0", ] -[[package]] -name = "native-tls" -version = "0.2.14" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87de3442987e9dbec73158d5c715e7ad9072fda936bb03d19d7fa10e00520f0e" -dependencies = [ - "libc", - "log", - "openssl", - "openssl-probe", - "openssl-sys", - "schannel", - "security-framework", - "security-framework-sys", - "tempfile", -] - -[[package]] -name = "nix" -version = "0.24.3" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "fa52e972a9a719cecb6864fb88568781eb706bac2cd1d4f04a648542dbf78069" -dependencies = [ - "bitflags 1.3.2", - "cfg-if", - "libc", -] - -[[package]] -name = "nix" -version = "0.29.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "71e2746dc3a24dd78b3cfcb7be93368c6de9963d30f43a6a73998a9cf4b17b46" -dependencies = [ - "bitflags 2.8.0", - "cfg-if", - "cfg_aliases", - "libc", -] - [[package]] name = "notify" version = "8.0.0" @@ -1499,81 +1210,12 @@ version = "1.20.3" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "945462a4b81e43c4e3ba96bd7b49d834c6f61198356aa858733bc4acf3cbe62e" -[[package]] -name = "openssl" -version = "0.10.71" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "5e14130c6a98cd258fdcb0fb6d744152343ff729cbfcb28c656a9d12b999fbcd" -dependencies = [ - "bitflags 2.8.0", - "cfg-if", - "foreign-types", - "libc", - "once_cell", - "openssl-macros", - "openssl-sys", -] - -[[package]] -name = "openssl-macros" -version = "0.1.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c" -dependencies = [ - "proc-macro2", - "quote", - "syn 2.0.98", -] - -[[package]] -name = "openssl-probe" -version = "0.1.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "d05e27ee213611ffe7d6348b942e8f942b37114c00cc03cec254295a4a17852e" - -[[package]] -name = "openssl-src" -version = "300.5.0+3.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e8ce546f549326b0e6052b649198487d91320875da901e7bd11a06d1ee3f9c2f" -dependencies = [ - "cc", -] - -[[package]] -name = "openssl-sys" -version = "0.9.106" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8bb61ea9811cc39e3c2069f40b8b8e2e70d8569b361f879786cc7ed48b777cdd" -dependencies = [ - "cc", - "libc", - "openssl-src", - "pkg-config", - "vcpkg", -] - -[[package]] -name = "os_str_bytes" -version = "6.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "e2355d85b9a3786f481747ced0e0ff2ba35213a1f9bd406ed906554d7af805a1" - [[package]] name = "overload" version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "b15813163c1d831bf4a13c3610c05c0d03b39feb07f7e09fa234dac9b15aaf39" -[[package]] -name = "owo-colors" -version = "3.5.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c1b04fb49957986fdce4d6ee7a65027d55d4b6d2265e5848bbb507b58ccfdb6f" -dependencies = [ - "supports-color", -] - [[package]] name = "parking_lot" version = "0.12.3" @@ -1646,30 +1288,6 @@ dependencies = [ "zerocopy 0.7.35", ] -[[package]] -name = "proc-macro-error" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "da25490ff9892aab3fcf7c36f08cfb902dd3e71ca0f9f9517bea02a73a5ce38c" -dependencies = [ - "proc-macro-error-attr", - "proc-macro2", - "quote", - "syn 1.0.109", - "version_check", -] - -[[package]] -name = "proc-macro-error-attr" -version = "1.0.4" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a1be40180e52ecc98ad80b184934baf3d0d29f979574e439af5a55274b35f869" -dependencies = [ - "proc-macro2", - "quote", - "version_check", -] - [[package]] name = "proc-macro2" version = "1.0.93" @@ -1725,6 +1343,61 @@ version = "2.28.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "106dd99e98437432fed6519dedecfade6a06a73bb7b2a1e019fdd2bee5778d94" +[[package]] +name = "quinn" +version = "0.11.8" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "626214629cda6781b6dc1d316ba307189c85ba657213ce642d9c77670f8202c8" +dependencies = [ + "bytes", + "cfg_aliases", + "pin-project-lite", + "quinn-proto", + "quinn-udp", + "rustc-hash", + "rustls", + "socket2", + "thiserror 2.0.11", + "tokio", + "tracing", + "web-time", +] + +[[package]] +name = "quinn-proto" +version = "0.11.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "49df843a9161c85bb8aae55f101bc0bac8bcafd637a620d9122fd7e0b2f7422e" +dependencies = [ + "bytes", + "getrandom 0.3.1", + "lru-slab", + "rand 0.9.0", + "ring", + "rustc-hash", + "rustls", + "rustls-pki-types", + "slab", + "thiserror 2.0.11", + "tinyvec", + "tracing", + "web-time", +] + +[[package]] +name = "quinn-udp" +version = "0.5.12" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "ee4e529991f949c5e25755532370b8af5d114acae52326361d68d47af64aa842" +dependencies = [ + "cfg_aliases", + "libc", + "once_cell", + "socket2", + "tracing", + "windows-sys 0.59.0", +] + [[package]] name = "quote" version = "1.0.38" @@ -1804,17 +1477,6 @@ dependencies = [ "bitflags 2.8.0", ] -[[package]] -name = "redox_users" -version = "0.4.6" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ba009ff324d1fc1b900bd1fdb31564febe58a8ccc8a6fdbb93b543d33b13ca43" -dependencies = [ - "getrandom 0.2.15", - "libredox", - "thiserror 1.0.69", -] - [[package]] name = "regex" version = "1.11.1" @@ -1867,40 +1529,39 @@ checksum = "43e734407157c3c2034e0258f5e4473ddb361b1e85f95a66690d67264d7cd1da" dependencies = [ "base64", "bytes", - "encoding_rs", "futures-channel", "futures-core", "futures-util", - "h2", "http", "http-body", "http-body-util", "hyper", "hyper-rustls", - "hyper-tls", "hyper-util", "ipnet", "js-sys", "log", "mime", - "native-tls", "once_cell", "percent-encoding", "pin-project-lite", + "quinn", + "rustls", "rustls-pemfile", + "rustls-pki-types", "serde", "serde_json", "serde_urlencoded", "sync_wrapper", - "system-configuration", "tokio", - "tokio-native-tls", + "tokio-rustls", "tower", "tower-service", "url", "wasm-bindgen", "wasm-bindgen-futures", "web-sys", + "webpki-roots 0.26.11", "windows-registry", ] @@ -1925,13 +1586,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "719b953e2095829ee67db738b3bfa9fa368c94900df327b3f07fe6e794d2fe1f" [[package]] -name = "rustc_version" -version = "0.4.1" +name = "rustc-hash" +version = "2.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "cfcb3a22ef46e85b45de6ee7e79d063319ebb6594faafcf1c225ea92ab6e9b92" -dependencies = [ - "semver", -] +checksum = "357703d41365b4b27c590e3ed91eabb1b663f07c4c084095e60cbed4362dff0d" [[package]] name = "rustix" @@ -1953,6 +1611,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "47796c98c480fce5406ef69d1c76378375492c3b0a0de587be0c1d9feb12f395" dependencies = [ "once_cell", + "ring", "rustls-pki-types", "rustls-webpki", "subtle", @@ -1973,6 +1632,9 @@ name = "rustls-pki-types" version = "1.11.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "917ce264624a4b4db1c364dcc35bfca9ded014d0a958cd47ad3e960e988ea51c" +dependencies = [ + "web-time", +] [[package]] name = "rustls-webpki" @@ -2006,15 +1668,6 @@ dependencies = [ "winapi-util", ] -[[package]] -name = "schannel" -version = "0.1.27" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "1f29ebaa345f945cec9fbbc532eb307f0fdad8161f281b6369539c8d84876b3d" -dependencies = [ - "windows-sys 0.59.0", -] - [[package]] name = "scopeguard" version = "1.2.0" @@ -2029,13 +1682,11 @@ dependencies = [ "axum", "base64", "chrono", - "cross", "dashmap", "dotenvy", "faster-hex", - "indexmap 2.7.1", + "indexmap", "notify", - "openssl", "prometheus", "rand 0.9.0", "reqwest", @@ -2045,7 +1696,7 @@ dependencies = [ "serde_json", "thiserror 2.0.11", "tokio", - "toml 0.8.20", + "toml", "tower-http", "tracing", "tracing-appender", @@ -2056,29 +1707,6 @@ dependencies = [ "zip", ] -[[package]] -name = "security-framework" -version = "2.11.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "897b2245f0b511c87893af39b033e5ca9cce68824c4d7e7630b5a1d339658d02" -dependencies = [ - "bitflags 2.8.0", - "core-foundation", - "core-foundation-sys", - "libc", - "security-framework-sys", -] - -[[package]] -name = "security-framework-sys" -version = "2.14.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "49db231d56a190491cb4aeda9527f1ad45345af50b0851622a7adb8c03b01c32" -dependencies = [ - "core-foundation-sys", - "libc", -] - [[package]] name = "semver" version = "1.0.25" @@ -2102,16 +1730,7 @@ checksum = "f09503e191f4e797cb8aac08e9a4a4695c5edf6a2e70e376d961ddd5c969f82b" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", -] - -[[package]] -name = "serde_ignored" -version = "0.1.10" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "a8e319a36d1b52126a0d608f24e93b2d81297091818cd70625fcf50a15d84ddf" -dependencies = [ - "serde", + "syn", ] [[package]] @@ -2177,18 +1796,6 @@ dependencies = [ "lazy_static", ] -[[package]] -name = "shell-escape" -version = "0.1.5" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "45bb67a18fa91266cc7807181f62f9178a6873bfad7dc788c42e6430db40184f" - -[[package]] -name = "shell-words" -version = "1.1.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "24188a676b6ae68c3b2cb3a01be17fbf7240ce009799bb56d5b1409051e78fde" - [[package]] name = "shlex" version = "1.3.0" @@ -2241,39 +1848,12 @@ version = "1.2.0" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "a8f112729512f8e442d81f95a8a7ddf2b7c6b8a1a6f509a95864142b30cab2d3" -[[package]] -name = "strsim" -version = "0.10.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "73473c0e59e6d5812c5dfe2a064a6444949f089e20eec9a2e5506596494e4623" - [[package]] name = "subtle" version = "2.6.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "13c2bddecc57b384dee18652358fb23172facb8a2c51ccc10d74c157bdea3292" -[[package]] -name = "supports-color" -version = "1.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8ba6faf2ca7ee42fdd458f4347ae0a9bd6bcc445ad7cb57ad82b383f18870d6f" -dependencies = [ - "atty", - "is_ci", -] - -[[package]] -name = "syn" -version = "1.0.109" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "72b64191b275b66ffe2469e8af2c1cfe3bafa67b529ead792a6d0160888b4237" -dependencies = [ - "proc-macro2", - "quote", - "unicode-ident", -] - [[package]] name = "syn" version = "2.0.98" @@ -2302,59 +1882,9 @@ checksum = "c8af7666ab7b6390ab78131fb5b0fce11d6b7a6951602017c35fa82800708971" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn", ] -[[package]] -name = "system-configuration" -version = "0.6.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "3c879d448e9d986b661742763247d3693ed13609438cf3d006f51f5368a5ba6b" -dependencies = [ - "bitflags 2.8.0", - "core-foundation", - "system-configuration-sys", -] - -[[package]] -name = "system-configuration-sys" -version = "0.6.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "8e1d1b10ced5ca923a1fcb8d03e96b8d3268065d724548c0211415ff6ac6bac4" -dependencies = [ - "core-foundation-sys", - "libc", -] - -[[package]] -name = "tempfile" -version = "3.17.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "22e5a0acb1f3f55f65cc4a866c361b2fb2a0ff6366785ae6fbb5f85df07ba230" -dependencies = [ - "cfg-if", - "fastrand", - "getrandom 0.3.1", - "once_cell", - "rustix", - "windows-sys 0.59.0", -] - -[[package]] -name = "termcolor" -version = "1.4.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "06794f8f6c5c898b3275aebefa6b8a1cb24cd2c6c79397ab15774837a0bc5755" -dependencies = [ - "winapi-util", -] - -[[package]] -name = "textwrap" -version = "0.16.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "23d434d3f8967a09480fb04132ebe0a3e088c173e6d0ee7897abbdf4eab0f8b9" - [[package]] name = "thiserror" version = "1.0.69" @@ -2381,7 +1911,7 @@ checksum = "4fee6c4efc90059e10f81e6d42c60a18f76588c3d74cb83a0b242a2b6c7504c1" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn", ] [[package]] @@ -2392,7 +1922,7 @@ checksum = "26afc1baea8a989337eeb52b6e72a039780ce45c3edfcc9c5b9d112feeb173c2" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn", ] [[package]] @@ -2446,6 +1976,21 @@ dependencies = [ "zerovec", ] +[[package]] +name = "tinyvec" +version = "1.9.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "09b3661f17e86524eccd4371ab0429194e0d7c008abb45f7a7495b1719463c71" +dependencies = [ + "tinyvec_macros", +] + +[[package]] +name = "tinyvec_macros" +version = "0.1.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "1f3ccbac311fea05f86f61904b462b55fb3df8837a366dfc601a0161d0532f20" + [[package]] name = "tokio" version = "1.43.0" @@ -2472,17 +2017,7 @@ checksum = "6e06d43f1345a3bcd39f6a56dbb7dcab2ba47e68e8ac134855e7e2bdbaf8cab8" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", -] - -[[package]] -name = "tokio-native-tls" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "bbae76ab933c85776efabc971569dd6119c580d8f5d448769dec1764bf796ef2" -dependencies = [ - "native-tls", - "tokio", + "syn", ] [[package]] @@ -2520,15 +2055,6 @@ dependencies = [ "tokio", ] -[[package]] -name = "toml" -version = "0.5.11" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "f4f7f0dd8d50a853a531c426359045b1998f04219d88799810762cd4ad314234" -dependencies = [ - "serde", -] - [[package]] name = "toml" version = "0.8.20" @@ -2556,7 +2082,7 @@ version = "0.22.24" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "17b4795ff5edd201c7cd6dca065ae59972ce77d1b80fa0a84d94950ece7d1474" dependencies = [ - "indexmap 2.7.1", + "indexmap", "serde", "serde_spanned", "toml_datetime", @@ -2639,7 +2165,7 @@ checksum = "395ae124c09f9e6918a2310af6038fba074bcf474ac352496d5910dd59a2226d" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn", ] [[package]] @@ -2777,12 +2303,6 @@ version = "0.1.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "ba73ea9cf16a25df0c8caa16c51acb937d5712a8429db78a3ee29d5dcacd3a65" -[[package]] -name = "vcpkg" -version = "0.2.15" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "accd4ea62f7bb7a82fe23066fb0957d48ef677f6eeb8215f372f52e48bb32426" - [[package]] name = "version_check" version = "0.9.5" @@ -2845,7 +2365,7 @@ dependencies = [ "log", "proc-macro2", "quote", - "syn 2.0.98", + "syn", "wasm-bindgen-shared", ] @@ -2880,7 +2400,7 @@ checksum = "8ae87ea40c9f689fc23f209965b6fb8a99ad69aeeb0231408be24920604395de" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn", "wasm-bindgen-backend", "wasm-bindgen-shared", ] @@ -2905,15 +2425,31 @@ dependencies = [ ] [[package]] -name = "which" -version = "4.4.2" +name = "web-time" +version = "1.1.0" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "87ba24419a2078cd2b0f2ede2691b6c66d8e47836da3b6db8265ebad47afbfc7" +checksum = "5a6580f308b1fad9207618087a65c04e7a10bc77e02c8e84e9b00dd4b12fa0bb" dependencies = [ - "either", - "home", - "once_cell", - "rustix", + "js-sys", + "wasm-bindgen", +] + +[[package]] +name = "webpki-roots" +version = "0.26.11" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "521bc38abb08001b01866da9f51eb7c5d647a19260e00054a8c7fd5f9e57f7a9" +dependencies = [ + "webpki-roots 1.0.0", +] + +[[package]] +name = "webpki-roots" +version = "1.0.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2853738d1cc4f2da3a225c18ec6c3721abb31961096e9dbf5ab35fa88b19cfdb" +dependencies = [ + "rustls-pki-types", ] [[package]] @@ -3118,7 +2654,7 @@ checksum = "2380878cad4ac9aac1e2435f3eb4020e8374b5f13c296cb75b4620ff8e229154" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn", "synstructure", ] @@ -3149,7 +2685,7 @@ checksum = "fa4f8080344d4671fb4e831a13ad1e68092748387dfc4f55e356242fae12ce3e" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn", ] [[package]] @@ -3160,7 +2696,7 @@ checksum = "eea57037071898bf96a6da35fd626f4f27e9cee3ead2a6c703cf09d472b2e700" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn", ] [[package]] @@ -3180,7 +2716,7 @@ checksum = "595eed982f7d355beb85837f651fa22e90b3c044842dc7f2c2842c086f295808" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn", "synstructure", ] @@ -3201,7 +2737,7 @@ checksum = "ce36e65b0d2999d2aafac989fb249189a141aee1f53c612c1f37d72631959f69" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn", ] [[package]] @@ -3223,7 +2759,7 @@ checksum = "6eafa6dfb17584ea3e2bd6e76e0cc15ad7af12b09abdd1ca55961bed9b1063c6" dependencies = [ "proc-macro2", "quote", - "syn 2.0.98", + "syn", ] [[package]] @@ -3242,7 +2778,7 @@ dependencies = [ "displaydoc", "flate2", "hmac", - "indexmap 2.7.1", + "indexmap", "lzma-rs", "memchr", "pbkdf2", diff --git a/Cargo.toml b/Cargo.toml index 2c79952..c378448 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -25,7 +25,7 @@ dashmap = { version = "6.0", features = ["serde"] } faster-hex = "0.10" uuid = { version = "1.11", features = ["serde"] } base64 = "0.22" -reqwest = { version = "0.12", features = ["blocking", "json"] } +reqwest = { version = "0.12", default-features = false, features = ["blocking", "json", "rustls-tls"] } dotenvy = "0.15" semver = "1.0" walkdir = "2.5" @@ -34,7 +34,6 @@ zip = "2.2" notify = "8.0" # Crypto -openssl = { version = "0.10", features = ["vendored"] } ring = "0.17" rand = "0.9" @@ -42,4 +41,4 @@ rand = "0.9" axum = { version = "0.8", features = ["ws", "macros", "http2"] } tower-http = { version = "0.6", features = ["trace"] } tokio = { version = "1.41", features = ["full"] } -prometheus = { version = "0.13.4", features = ["process"] } +prometheus = { version = "0.13.4", features = ["process"] } \ No newline at end of file diff --git a/Dockerfile b/Dockerfile index 93f1689..a800b8b 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,12 +1,12 @@ -ARG ALPINE_VERSION="3.21" -ARG RUST_VERSION="1.85" +ARG ALPINE_VERSION="" +ARG RUST_VERSION="1" ## Chef +# defaults to rust:1-alpine FROM --platform=$BUILDPLATFORM rust:${RUST_VERSION}-alpine${ALPINE_VERSION} AS chef USER root -RUN apk add --no-cache musl-dev libressl-dev zig perl make -RUN cargo install --locked cargo-chef cargo-zigbuild +RUN apk add --no-cache musl-dev cargo-zigbuild +RUN cargo install --locked cargo-chef WORKDIR /build -ENV PKG_CONFIG_SYSROOT_DIR=/ ## Planner FROM chef AS planner @@ -17,8 +17,8 @@ RUN cargo chef prepare --recipe-path recipe.json ## Builder FROM chef AS builder COPY --from=planner /build/recipe.json recipe.json -# Map Docker's TARGETPLATFORM to Rust's target -# and save the result to a .env file +# Map Docker's TARGETPLATFORM to Rust's build +# target and save the result to a .env file ARG TARGETPLATFORM RUN <