diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml index 474176c03..a5086b537 100644 --- a/.github/workflows/ci.yml +++ b/.github/workflows/ci.yml @@ -41,6 +41,14 @@ jobs: with: arguments: --all-features --workspace + provider_database: + name: Check provider database + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@v3 + - name: Check provider database + run: scripts/update-provider-database.sh + docs: name: Rust doc comments runs-on: ubuntu-latest diff --git a/CHANGELOG.md b/CHANGELOG.md index b6b48021f..c6044a1bb 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -6,6 +6,7 @@ - Make smeared timestamp generation non-async. #4075 - Set minimum TLS version to 1.2. #4096 - Run `cargo-deny` in CI. #4101 +- Check provider database with CI. #4099 ### Fixes - Do not block async task executor while decrypting the messages. #4079 diff --git a/src/provider/update.py b/scripts/update-provider-database.py similarity index 98% rename from src/provider/update.py rename to scripts/update-provider-database.py index 304b80e74..681872ff5 100755 --- a/src/provider/update.py +++ b/scripts/update-provider-database.py @@ -201,7 +201,10 @@ if __name__ == "__main__": out_all += out_ids; out_all += "].iter().copied().collect());\n\n" - now = datetime.datetime.utcnow() + if len(sys.argv) < 3: + now = datetime.datetime.utcnow() + else: + now = datetime.datetime.fromisoformat(sys.argv[2]) out_all += "pub static PROVIDER_UPDATED: Lazy = "\ "Lazy::new(|| chrono::NaiveDate::from_ymd_opt("+str(now.year)+", "+str(now.month)+", "+str(now.day)+").unwrap());\n" diff --git a/scripts/update-provider-database.sh b/scripts/update-provider-database.sh new file mode 100755 index 000000000..c38c1e91d --- /dev/null +++ b/scripts/update-provider-database.sh @@ -0,0 +1,22 @@ +#!/usr/bin/env bash +# Updates provider database. +# Returns 1 if the database is changed, 0 otherwise. +set -euo pipefail + +export TZ=UTC + +# Provider database revision. +REV=3c8f7e846c915a183dc44536fb5480d1f25d7c42 + +CORE_ROOT="$PWD" +TMP="$(mktemp -d)" +git clone --filter=blob:none https://github.com/deltachat/provider-db.git "$TMP" +cd "$TMP" +git checkout "$REV" +DATE=$(git show -s --format=%cs) +"$CORE_ROOT"/scripts/update-provider-database.py "$TMP/_providers" "$DATE" >"$CORE_ROOT/src/provider/data.rs" +rustfmt "$CORE_ROOT/src/provider/data.rs" +rm -fr "$TMP" + +cd "$CORE_ROOT" +test -z "$(git status --porcelain src/provider/data.rs)" diff --git a/src/provider/data.rs b/src/provider/data.rs index 73eb49634..f7736c6e9 100644 --- a/src/provider/data.rs +++ b/src/provider/data.rs @@ -1952,4 +1952,4 @@ pub(crate) static PROVIDER_IDS: Lazy> = }); pub static PROVIDER_UPDATED: Lazy = - Lazy::new(|| chrono::NaiveDate::from_ymd_opt(2023, 2, 21).unwrap()); + Lazy::new(|| chrono::NaiveDate::from_ymd_opt(2023, 2, 20).unwrap());