feat: add utility to convert TOML configuration file to list of environment variables (#3096)

This commit is contained in:
Sanchith Hegde
2023-12-11 13:20:19 +05:30
committed by GitHub
parent 4e8de46423
commit 2c4599a1cd
30 changed files with 485 additions and 466 deletions

View File

@ -130,159 +130,53 @@ jobs:
shell: bash
run: sed -i 's/rustflags = \[/rustflags = \[\n "-Dwarnings",/' .cargo/config.toml
- name: Check files changed
- name: Check modified crates
shell: bash
run: |
if git diff --exit-code --quiet origin/$GITHUB_BASE_REF -- crates/api_models/; then
echo "api_models_changes_exist=false" >> $GITHUB_ENV
else
echo "api_models_changes_exist=true" >> $GITHUB_ENV
fi
if git diff --exit-code --quiet origin/$GITHUB_BASE_REF -- crates/cards/; then
echo "cards_changes_exist=false" >> $GITHUB_ENV
else
echo "cards_changes_exist=true" >> $GITHUB_ENV
fi
if git diff --exit-code --quiet origin/$GITHUB_BASE_REF -- crates/common_enums/; then
echo "common_enums_changes_exist=false" >> $GITHUB_ENV
else
echo "common_enums_changes_exist=true" >> $GITHUB_ENV
fi
if git diff --exit-code --quiet origin/$GITHUB_BASE_REF -- crates/common_utils/; then
echo "common_utils_changes_exist=false" >> $GITHUB_ENV
else
echo "common_utils_changes_exist=true" >> $GITHUB_ENV
fi
if git diff --exit-code --quiet origin/$GITHUB_BASE_REF -- crates/diesel_models/; then
echo "diesel_models_changes_exist=false" >> $GITHUB_ENV
else
echo "diesel_models_changes_exist=true" >> $GITHUB_ENV
fi
if git diff --exit-code --quiet origin/$GITHUB_BASE_REF -- crates/drainer/; then
echo "drainer_changes_exist=false" >> $GITHUB_ENV
else
echo "drainer_changes_exist=true" >> $GITHUB_ENV
fi
if git diff --exit-code --quiet origin/$GITHUB_BASE_REF -- crates/external_services/; then
echo "external_services_changes_exist=false" >> $GITHUB_ENV
else
echo "external_services_changes_exist=true" >> $GITHUB_ENV
fi
if git diff --exit-code --quiet origin/$GITHUB_BASE_REF -- crates/masking/; then
echo "masking_changes_exist=false" >> $GITHUB_ENV
else
echo "masking_changes_exist=true" >> $GITHUB_ENV
fi
if git diff --exit-code --quiet origin/$GITHUB_BASE_REF -- crates/redis_interface/; then
echo "redis_interface_changes_exist=false" >> $GITHUB_ENV
else
echo "redis_interface_changes_exist=true" >> $GITHUB_ENV
fi
if git diff --exit-code --quiet origin/$GITHUB_BASE_REF -- crates/router/; then
echo "router_changes_exist=false" >> $GITHUB_ENV
else
echo "router_changes_exist=true" >> $GITHUB_ENV
fi
if git diff --exit-code --quiet origin/$GITHUB_BASE_REF -- crates/storage_impl/; then
echo "storage_impl_changes_exist=false" >> $GITHUB_ENV
else
echo "storage_impl_changes_exist=true" >> $GITHUB_ENV
fi
if git diff --exit-code --quiet origin/$GITHUB_BASE_REF -- crates/router_derive/; then
echo "router_derive_changes_exist=false" >> $GITHUB_ENV
else
echo "router_derive_changes_exist=true" >> $GITHUB_ENV
fi
if git diff --exit-code --quiet origin/$GITHUB_BASE_REF -- crates/router_env/; then
echo "router_env_changes_exist=false" >> $GITHUB_ENV
else
echo "router_env_changes_exist=true" >> $GITHUB_ENV
fi
if git diff --exit-code --quiet origin/$GITHUB_BASE_REF -- crates/test_utils/; then
echo "test_utils_changes_exist=false" >> $GITHUB_ENV
else
echo "test_utils_changes_exist=true" >> $GITHUB_ENV
fi
if git diff --submodule=diff --exit-code --quiet origin/$GITHUB_BASE_REF -- crates/pm_auth/; then
echo "pm_auth_changes_exist=false" >> $GITHUB_ENV
else
echo "pm_auth_changes_exist=true" >> $GITHUB_ENV
fi
# Obtain a list of workspace members
workspace_members="$(
cargo metadata --format-version 1 --no-deps \
| jq --compact-output --monochrome-output --raw-output '.workspace_members | sort | .[] | split(" ")[0]'
)"
- name: Cargo hack api_models
if: env.api_models_changes_exist == 'true'
shell: bash
run: cargo hack check --each-feature --no-dev-deps -p api_models
PACKAGES_CHECKED=()
PACKAGES_SKIPPED=()
- name: Cargo hack cards
if: env.cards_changes_exist == 'true'
shell: bash
run: cargo hack check --each-feature --no-dev-deps -p cards
while IFS= read -r package_name; do
# Obtain comma-separated list of transitive workspace dependencies for each workspace member
change_paths="$(cargo tree --all-features --no-dedupe --prefix none --package "${package_name}" \
| grep 'crates/' \
| sort --unique \
| awk --field-separator ' ' '{ printf "crates/%s\n", $1 }' | paste -d ',' -s -)"
- name: Cargo hack common_enums
if: env.common_enums_changes_exist == 'true'
shell: bash
run: cargo hack check --each-feature --no-dev-deps -p common_enums
# Store change paths in an array by splitting `change_paths` by comma
IFS=',' read -ra change_paths <<< "${change_paths}"
- name: Cargo hack common_utils
if: env.common_utils_changes_exist == 'true'
shell: bash
run: cargo hack check --each-feature --no-dev-deps -p common_utils
# A package must be checked if any of its transitive dependencies (or itself) has been modified
if git diff --exit-code --quiet "origin/${GITHUB_BASE_REF}" -- "${change_paths[@]}"; then
printf '::debug::Skipping `%s` since none of these paths were modified: %s\n' "${package_name}" "${change_paths[*]}"
PACKAGES_SKIPPED+=("${package_name}")
else
printf '::debug::Checking `%s` since at least one of these paths was modified: %s\n' "${package_name}" "${change_paths[*]}"
PACKAGES_CHECKED+=("${package_name}")
fi
done <<< "${workspace_members}"
- name: Cargo hack diesel_models
if: env.diesel_models_changes_exist == 'true'
shell: bash
run: cargo hack check --each-feature --no-dev-deps -p diesel_models
printf '::notice::Packages checked: %s; Packages skipped: %s\n' "${PACKAGES_CHECKED[*]}" "${PACKAGES_SKIPPED[*]}"
echo "PACKAGES_CHECKED=${PACKAGES_CHECKED[*]}" >> ${GITHUB_ENV}
echo "PACKAGES_SKIPPED=${PACKAGES_SKIPPED[*]}" >> ${GITHUB_ENV}
- name: Cargo hack drainer
if: env.drainer_changes_exist == 'true'
- name: Run `cargo hack` on modified crates
shell: bash
run: cargo hack check --each-feature --no-dev-deps -p drainer
run: |
# Store packages to check in an array by splitting `PACKAGES_CHECKED` by space
IFS=' ' read -ra PACKAGES_CHECKED <<< "${PACKAGES_CHECKED}"
- name: Cargo hack external_services
if: env.external_services_changes_exist == 'true'
shell: bash
run: cargo hack check --each-feature --no-dev-deps -p external_services
- name: Cargo hack masking
if: env.masking_changes_exist == 'true'
shell: bash
run: cargo hack check --each-feature --no-dev-deps -p masking
- name: Cargo hack redis_interface
if: env.redis_interface_changes_exist == 'true'
shell: bash
run: cargo hack check --each-feature --no-dev-deps -p redis_interface
- name: Cargo hack pm_auth
if: env.pm_auth_changes_exist == 'true'
shell: bash
run: cargo hack check --each-feature --no-dev-deps -p pm_auth
- name: Cargo hack router
if: env.router_changes_exist == 'true'
shell: bash
run: cargo hack check --each-feature --skip kms,basilisk,kv_store,accounts_cache,openapi --no-dev-deps -p router
- name: Cargo hack storage_impl
if: env.storage_impl_changes_exist == 'true'
shell: bash
run: cargo hack check --each-feature --no-dev-deps -p storage_impl
- name: Cargo hack router_derive
if: env.router_derive_changes_exist == 'true'
shell: bash
run: cargo hack check --each-feature --no-dev-deps -p router_derive
- name: Cargo hack router_env
if: env.router_env_changes_exist == 'true'
shell: bash
run: cargo hack check --each-feature --no-dev-deps -p router_env
- name: Cargo hack test_utils
if: env.test_utils_changes_exist == 'true'
shell: bash
run: cargo hack check --each-feature --no-dev-deps -p test_utils
for package in "${PACKAGES_CHECKED[@]}"; do
printf '::group::Running `cargo hack` on package `%s`\n' "${package}"
cargo hack check --each-feature --all-targets --package "${package}"
echo '::endgroup::'
done
# cargo-deny:
# name: Run cargo-deny
@ -393,159 +287,53 @@ jobs:
git push
fi
- name: Check files changed
- name: Check modified crates
shell: bash
run: |
if git diff --exit-code --quiet origin/$GITHUB_BASE_REF -- crates/api_models/; then
echo "api_models_changes_exist=false" >> $GITHUB_ENV
else
echo "api_models_changes_exist=true" >> $GITHUB_ENV
fi
if git diff --exit-code --quiet origin/$GITHUB_BASE_REF -- crates/cards/; then
echo "cards_changes_exist=false" >> $GITHUB_ENV
else
echo "cards_changes_exist=true" >> $GITHUB_ENV
fi
if git diff --exit-code --quiet origin/$GITHUB_BASE_REF -- crates/common_enums/; then
echo "common_enums_changes_exist=false" >> $GITHUB_ENV
else
echo "common_enums_changes_exist=true" >> $GITHUB_ENV
fi
if git diff --exit-code --quiet origin/$GITHUB_BASE_REF -- crates/common_utils/; then
echo "common_utils_changes_exist=false" >> $GITHUB_ENV
else
echo "common_utils_changes_exist=true" >> $GITHUB_ENV
fi
if git diff --exit-code --quiet origin/$GITHUB_BASE_REF -- crates/diesel_models/; then
echo "diesel_models_changes_exist=false" >> $GITHUB_ENV
else
echo "diesel_models_changes_exist=true" >> $GITHUB_ENV
fi
if git diff --exit-code --quiet origin/$GITHUB_BASE_REF -- crates/drainer/; then
echo "drainer_changes_exist=false" >> $GITHUB_ENV
else
echo "drainer_changes_exist=true" >> $GITHUB_ENV
fi
if git diff --exit-code --quiet origin/$GITHUB_BASE_REF -- crates/external_services/; then
echo "external_services_changes_exist=false" >> $GITHUB_ENV
else
echo "external_services_changes_exist=true" >> $GITHUB_ENV
fi
if git diff --exit-code --quiet origin/$GITHUB_BASE_REF -- crates/masking/; then
echo "masking_changes_exist=false" >> $GITHUB_ENV
else
echo "masking_changes_exist=true" >> $GITHUB_ENV
fi
if git diff --exit-code --quiet origin/$GITHUB_BASE_REF -- crates/redis_interface/; then
echo "redis_interface_changes_exist=false" >> $GITHUB_ENV
else
echo "redis_interface_changes_exist=true" >> $GITHUB_ENV
fi
if git diff --exit-code --quiet origin/$GITHUB_BASE_REF -- crates/router/; then
echo "router_changes_exist=false" >> $GITHUB_ENV
else
echo "router_changes_exist=true" >> $GITHUB_ENV
fi
if git diff --exit-code --quiet origin/$GITHUB_BASE_REF -- crates/router_derive/; then
echo "router_derive_changes_exist=false" >> $GITHUB_ENV
else
echo "router_derive_changes_exist=true" >> $GITHUB_ENV
fi
if git diff --exit-code --quiet origin/$GITHUB_BASE_REF -- crates/storage_impl/; then
echo "storage_impl_changes_exist=false" >> $GITHUB_ENV
else
echo "storage_impl_changes_exist=true" >> $GITHUB_ENV
fi
if git diff --exit-code --quiet origin/$GITHUB_BASE_REF -- crates/router_env/; then
echo "router_env_changes_exist=false" >> $GITHUB_ENV
else
echo "router_env_changes_exist=true" >> $GITHUB_ENV
fi
if git diff --exit-code --quiet origin/$GITHUB_BASE_REF -- crates/test_utils/; then
echo "test_utils_changes_exist=false" >> $GITHUB_ENV
else
echo "test_utils_changes_exist=true" >> $GITHUB_ENV
fi
if git diff --submodule=diff --exit-code --quiet origin/$GITHUB_BASE_REF -- crates/pm_auth/; then
echo "pm_auth_changes_exist=false" >> $GITHUB_ENV
else
echo "pm_auth_changes_exist=true" >> $GITHUB_ENV
fi
# Obtain a list of workspace members
workspace_members="$(
cargo metadata --format-version 1 --no-deps \
| jq --compact-output --monochrome-output --raw-output '.workspace_members | sort | .[] | split(" ")[0]'
)"
- name: Cargo hack api_models
if: env.api_models_changes_exist == 'true'
shell: bash
run: cargo hack check --each-feature --no-dev-deps -p api_models
PACKAGES_CHECKED=()
PACKAGES_SKIPPED=()
- name: Cargo hack cards
if: env.cards_changes_exist == 'true'
shell: bash
run: cargo hack check --each-feature --no-dev-deps -p cards
while IFS= read -r package_name; do
# Obtain comma-separated list of transitive workspace dependencies for each workspace member
change_paths="$(cargo tree --all-features --no-dedupe --prefix none --package "${package_name}" \
| grep 'crates/' \
| sort --unique \
| awk --field-separator ' ' '{ printf "crates/%s\n", $1 }' | paste -d ',' -s -)"
- name: Cargo hack common_enums
if: env.common_enums_changes_exist == 'true'
shell: bash
run: cargo hack check --each-feature --no-dev-deps -p common_enums
# Store change paths in an array by splitting `change_paths` by comma
IFS=',' read -ra change_paths <<< "${change_paths}"
- name: Cargo hack common_utils
if: env.common_utils_changes_exist == 'true'
shell: bash
run: cargo hack check --each-feature --no-dev-deps -p common_utils
# A package must be checked if any of its transitive dependencies (or itself) has been modified
if git diff --exit-code --quiet "origin/${GITHUB_BASE_REF}" -- "${change_paths[@]}"; then
printf '::debug::Skipping `%s` since none of these paths were modified: %s\n' "${package_name}" "${change_paths[*]}"
PACKAGES_SKIPPED+=("${package_name}")
else
printf '::debug::Checking `%s` since at least one of these paths was modified: %s\n' "${package_name}" "${change_paths[*]}"
PACKAGES_CHECKED+=("${package_name}")
fi
done <<< "${workspace_members}"
- name: Cargo hack diesel_models
if: env.diesel_models_changes_exist == 'true'
shell: bash
run: cargo hack check --each-feature --no-dev-deps -p diesel_models
printf '::notice::Packages checked: %s; Packages skipped: %s\n' "${PACKAGES_CHECKED[*]}" "${PACKAGES_SKIPPED[*]}"
echo "PACKAGES_CHECKED=${PACKAGES_CHECKED[*]}" >> ${GITHUB_ENV}
echo "PACKAGES_SKIPPED=${PACKAGES_SKIPPED[*]}" >> ${GITHUB_ENV}
- name: Cargo hack drainer
if: env.drainer_changes_exist == 'true'
- name: Run `cargo hack` on modified crates
shell: bash
run: cargo hack check --each-feature --no-dev-deps -p drainer
run: |
# Store packages to check in an array by splitting `PACKAGES_CHECKED` by space
IFS=' ' read -ra PACKAGES_CHECKED <<< "${PACKAGES_CHECKED}"
- name: Cargo hack external_services
if: env.external_services_changes_exist == 'true'
shell: bash
run: cargo hack check --each-feature --no-dev-deps -p external_services
- name: Cargo hack masking
if: env.masking_changes_exist == 'true'
shell: bash
run: cargo hack check --each-feature --no-dev-deps -p masking
- name: Cargo hack redis_interface
if: env.redis_interface_changes_exist == 'true'
shell: bash
run: cargo hack check --each-feature --no-dev-deps -p redis_interface
- name: Cargo hack pm_auth
if: env.pm_auth_changes_exist == 'true'
shell: bash
run: cargo hack check --each-feature --no-dev-deps -p pm_auth
- name: Cargo hack router
if: env.router_changes_exist == 'true'
shell: bash
run: cargo hack check --each-feature --skip kms,basilisk,kv_store,accounts_cache,openapi --no-dev-deps -p router
- name: Cargo hack router_derive
if: env.router_derive_changes_exist == 'true'
shell: bash
run: cargo hack check --each-feature --no-dev-deps -p router_derive
- name: Cargo hack storage_impl
if: env.storage_impl_changes_exist == 'true'
shell: bash
run: cargo hack check --each-feature --no-dev-deps -p storage_impl
- name: Cargo hack router_env
if: env.router_env_changes_exist == 'true'
shell: bash
run: cargo hack check --each-feature --no-dev-deps -p router_env
- name: Cargo hack test_utils
if: env.test_utils_changes_exist == 'true'
shell: bash
run: cargo hack check --each-feature --no-dev-deps -p test_utils
for package in "${PACKAGES_CHECKED[@]}"; do
printf '::group::Running `cargo hack` on package `%s`\n' "${package}"
cargo hack check --each-feature --all-targets --package "${package}"
echo '::endgroup::'
done
typos:
name: Spell check

View File

@ -80,7 +80,7 @@ jobs:
- name: Cargo hack
if: ${{ github.event_name == 'push' }}
shell: bash
run: cargo hack check --each-feature --no-dev-deps
run: cargo hack check --workspace --each-feature --all-targets
- name: Cargo build release
if: ${{ github.event_name == 'merge_group' }}
@ -166,7 +166,7 @@ jobs:
- name: Cargo hack
if: ${{ github.event_name == 'push' }}
shell: bash
run: cargo hack check --each-feature --no-dev-deps
run: cargo hack check --workspace --each-feature --all-targets
- name: Cargo build release
if: ${{ github.event_name == 'merge_group' }}

281
Cargo.lock generated
View File

@ -44,8 +44,8 @@ dependencies = [
"actix-rt",
"actix-service",
"actix-utils",
"ahash 0.8.3",
"base64 0.21.4",
"ahash 0.8.6",
"base64 0.21.5",
"bitflags 1.3.2",
"brotli",
"bytes 1.5.0",
@ -80,7 +80,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e01ed3140b2f8d422c68afa1ed2e85d996ea619c988ac834d255db32138655cb"
dependencies = [
"quote",
"syn 2.0.38",
"syn 2.0.39",
]
[[package]]
@ -118,7 +118,7 @@ dependencies = [
"parse-size",
"proc-macro2",
"quote",
"syn 2.0.38",
"syn 2.0.39",
]
[[package]]
@ -220,7 +220,7 @@ dependencies = [
"actix-service",
"actix-utils",
"actix-web-codegen",
"ahash 0.7.6",
"ahash 0.7.7",
"bytes 1.5.0",
"bytestring",
"cfg-if 1.0.0",
@ -255,7 +255,7 @@ dependencies = [
"actix-router",
"proc-macro2",
"quote",
"syn 2.0.38",
"syn 2.0.39",
]
[[package]]
@ -281,25 +281,26 @@ checksum = "aae1277d39aeec15cb388266ecc24b11c80469deae6067e17a1a7aa9e5c1f234"
[[package]]
name = "ahash"
version = "0.7.6"
version = "0.7.7"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fcb51a0695d8f838b1ee009b3fbf66bda078cd64590202a864a8f3e8c4315c47"
checksum = "5a824f2aa7e75a0c98c5a504fceb80649e9c35265d44525b5f94de4771a395cd"
dependencies = [
"getrandom 0.2.10",
"getrandom 0.2.11",
"once_cell",
"version_check",
]
[[package]]
name = "ahash"
version = "0.8.3"
version = "0.8.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2c99f64d1e06488f620f932677e24bc6e2897582980441ae90a671415bd7ec2f"
checksum = "91429305e9f0a25f6205c5b8e0d2db09e0708a7a6df0f42212bb56c32c8ac97a"
dependencies = [
"cfg-if 1.0.0",
"getrandom 0.2.10",
"getrandom 0.2.11",
"once_cell",
"version_check",
"zerocopy",
]
[[package]]
@ -589,7 +590,7 @@ checksum = "16e62a023e7c117e27523144c5d2459f4397fcc3cab0085af8e2224f643a0193"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.38",
"syn 2.0.39",
]
[[package]]
@ -600,7 +601,7 @@ checksum = "bc00ceb34980c03614e35a3a4e218276a0a824e911d07651cd0d858a51e8c0f0"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.38",
"syn 2.0.39",
]
[[package]]
@ -636,8 +637,8 @@ dependencies = [
"actix-service",
"actix-tls",
"actix-utils",
"ahash 0.7.6",
"base64 0.21.4",
"ahash 0.7.7",
"base64 0.21.5",
"bytes 1.5.0",
"cfg-if 1.0.0",
"cookie",
@ -1163,9 +1164,9 @@ checksum = "9e1b586273c5702936fe7b7d6896644d8be71e6314cfe09d3167c95f712589e8"
[[package]]
name = "base64"
version = "0.21.4"
version = "0.21.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9ba43ea6f343b788c8764558649e08df62f86c6ef251fdaeb1ffd010a9ae50a2"
checksum = "35636a1494ede3b646cc98f74f8e62c773a38a659ebc777a2cf26b9b74171df9"
[[package]]
name = "base64-simd"
@ -1317,7 +1318,7 @@ dependencies = [
"proc-macro-crate 2.0.0",
"proc-macro2",
"quote",
"syn 2.0.38",
"syn 2.0.39",
"syn_derive",
]
@ -1609,9 +1610,9 @@ dependencies = [
[[package]]
name = "clap"
version = "4.3.4"
version = "4.3.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "80672091db20273a15cf9fdd4e47ed43b5091ec9841bf4c6145c9dfbbcae09ed"
checksum = "401a4694d2bf92537b6867d94de48c4842089645fdcdf6c71865b175d836e9c2"
dependencies = [
"clap_builder",
"clap_derive",
@ -1620,9 +1621,9 @@ dependencies = [
[[package]]
name = "clap_builder"
version = "4.3.4"
version = "4.3.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c1458a1df40e1e2afebb7ab60ce55c1fa8f431146205aa5f4887e0b111c27636"
checksum = "72394f3339a76daf211e57d4bcb374410f3965dcc606dd0e03738c7888766980"
dependencies = [
"anstyle",
"bitflags 1.3.2",
@ -1638,7 +1639,7 @@ dependencies = [
"heck",
"proc-macro2",
"quote",
"syn 2.0.38",
"syn 2.0.39",
]
[[package]]
@ -1740,6 +1741,18 @@ dependencies = [
"yaml-rust",
]
[[package]]
name = "config_importer"
version = "0.1.0"
dependencies = [
"anyhow",
"clap",
"indexmap 2.1.0",
"serde",
"serde_json",
"toml 0.7.4",
]
[[package]]
name = "constant_time_eq"
version = "0.2.6"
@ -2012,7 +2025,7 @@ dependencies = [
"proc-macro2",
"quote",
"strsim",
"syn 2.0.38",
"syn 2.0.39",
]
[[package]]
@ -2023,7 +2036,7 @@ checksum = "836a9bbc7ad63342d6d6e7b815ccab164bc77a2d95d84bc3117a8c0d5c98e2d5"
dependencies = [
"darling_core",
"quote",
"syn 2.0.38",
"syn 2.0.39",
]
[[package]]
@ -2033,7 +2046,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "978747c1d849a7d2ee5e8adc0159961c48fb7e5db2f06af6723b80123bb53856"
dependencies = [
"cfg-if 1.0.0",
"hashbrown 0.14.1",
"hashbrown 0.14.3",
"lock_api 0.4.10",
"once_cell",
"parking_lot_core 0.9.8",
@ -2160,7 +2173,7 @@ dependencies = [
"diesel_table_macro_syntax",
"proc-macro2",
"quote",
"syn 2.0.38",
"syn 2.0.39",
]
[[package]]
@ -2190,7 +2203,7 @@ version = "0.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fc5557efc453706fed5e4fa85006fe9817c224c3f480a34c7e5959fd700921c5"
dependencies = [
"syn 2.0.38",
"syn 2.0.39",
]
[[package]]
@ -2247,7 +2260,7 @@ checksum = "487585f4d0c6655fe74905e2504d8ad6908e4db67f744eb140876906c2f3175d"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.38",
"syn 2.0.39",
]
[[package]]
@ -2401,7 +2414,7 @@ dependencies = [
"common_enums",
"currency_conversion",
"euclid",
"getrandom 0.2.10",
"getrandom 0.2.11",
"kgraph_utils",
"once_cell",
"ron-parser",
@ -2427,7 +2440,7 @@ dependencies = [
"aws-sdk-sesv2",
"aws-sdk-sts",
"aws-smithy-client",
"base64 0.21.4",
"base64 0.21.5",
"common_utils",
"dyn-clone",
"error-stack",
@ -2597,7 +2610,7 @@ checksum = "b0fa992f1656e1707946bbba340ad244f0814009ef8c0118eb7b658395f19a2e"
dependencies = [
"frunk_proc_macro_helpers",
"quote",
"syn 2.0.38",
"syn 2.0.39",
]
[[package]]
@ -2609,7 +2622,7 @@ dependencies = [
"frunk_core",
"proc-macro2",
"quote",
"syn 2.0.38",
"syn 2.0.39",
]
[[package]]
@ -2621,7 +2634,7 @@ dependencies = [
"frunk_core",
"frunk_proc_macro_helpers",
"quote",
"syn 2.0.38",
"syn 2.0.39",
]
[[package]]
@ -2734,7 +2747,7 @@ checksum = "89ca545a94061b6365f2c7355b4b32bd20df3ff95f02da9329b34ccc3bd6ee72"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.38",
"syn 2.0.39",
]
[[package]]
@ -2806,9 +2819,9 @@ dependencies = [
[[package]]
name = "getrandom"
version = "0.2.10"
version = "0.2.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "be4136b2a15dd319360be1c07d9933517ccf0be8f16bf62a3bee4f0d618df427"
checksum = "fe9006bed769170c11f845cf00c7c1e9092aeb3f268e007c3e760ac68008070f"
dependencies = [
"cfg-if 1.0.0",
"js-sys",
@ -2907,16 +2920,16 @@ version = "0.12.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8a9ee70c43aaf417c914396645a0fa852624801b24ebb7ae78fe8272889ac888"
dependencies = [
"ahash 0.7.6",
"ahash 0.7.7",
]
[[package]]
name = "hashbrown"
version = "0.14.1"
version = "0.14.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7dfda62a12f55daeae5015f81b0baea145391cb4520f86c248fc615d72640d12"
checksum = "290f1a1d9242c78d09ce40a5e87e7554ee637af1351968159f4952f028f75604"
dependencies = [
"ahash 0.8.3",
"ahash 0.8.6",
"allocator-api2",
]
@ -2926,7 +2939,7 @@ version = "0.8.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e8094feaf31ff591f651a2664fb9cfd92bba7a60ce3197265e9482ebe753c8f7"
dependencies = [
"hashbrown 0.14.1",
"hashbrown 0.14.3",
]
[[package]]
@ -2935,7 +2948,7 @@ version = "0.3.9"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "06683b93020a07e3dbcf5f8c0f6d40080d725bea7936fc01ad345c01b97dc270"
dependencies = [
"base64 0.21.4",
"base64 0.21.5",
"bytes 1.5.0",
"headers-core",
"http",
@ -3140,16 +3153,16 @@ dependencies = [
[[package]]
name = "iana-time-zone"
version = "0.1.57"
version = "0.1.58"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2fad5b825842d2b38bd206f3e81d6957625fd7f0a361e345c30e01a0ae2dd613"
checksum = "8326b86b6cff230b97d0d312a6c40a60726df3332e721f72a1b035f451663b20"
dependencies = [
"android_system_properties",
"core-foundation-sys",
"iana-time-zone-haiku",
"js-sys",
"wasm-bindgen",
"windows",
"windows-core",
]
[[package]]
@ -3232,12 +3245,12 @@ dependencies = [
[[package]]
name = "indexmap"
version = "2.0.2"
version = "2.1.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "8adf3ddd720272c6ea8bf59463c04e0f93d0bbf7c5439b691bca2987e0270897"
checksum = "d530e1a18b1cb4c484e6e34556a0d948706958449fca0cab753d649f2bce3d1f"
dependencies = [
"equivalent",
"hashbrown 0.14.1",
"hashbrown 0.14.3",
"serde",
]
@ -3342,7 +3355,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "33a96c4f2128a6f44ecf7c36df2b03dddf5a07b060a4d5ebc0a81e9821f7c60e"
dependencies = [
"anyhow",
"base64 0.21.4",
"base64 0.21.5",
"flate2",
"once_cell",
"openssl",
@ -3388,7 +3401,7 @@ version = "8.3.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6971da4d9c3aa03c3d8f3ff0f4155b534aad021292003895a469716b2a230378"
dependencies = [
"base64 0.21.4",
"base64 0.21.5",
"pem",
"ring",
"serde",
@ -3434,9 +3447,9 @@ checksum = "e2abad23fbc42b3700f2f279844dc832adb2b2eb069b2df918f455c4e18cc646"
[[package]]
name = "libc"
version = "0.2.148"
version = "0.2.150"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "9cdc71e17332e86d2e1d38c1f99edcb6288ee11b815fb1a4b049eaa2114d369b"
checksum = "89d92a4743f9a61002fae18374ed11e7973f530cb3a3255fb354818118b2203c"
[[package]]
name = "libgit2-sys"
@ -3909,9 +3922,9 @@ dependencies = [
[[package]]
name = "num-traits"
version = "0.2.16"
version = "0.2.17"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "f30b0abd723be7e2ffca1272140fac1a2f084c77ec3e123c192b66af1ee9e6c2"
checksum = "39e3200413f237f41ab11ad6d161bc7239c84dcb631773ccd7de3dfe4b5c267c"
dependencies = [
"autocfg",
"libm",
@ -4013,7 +4026,7 @@ checksum = "a948666b637a0f465e8564c73e89d4dde00d72d4d473cc972f390fc3dcee7d9c"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.38",
"syn 2.0.39",
]
[[package]]
@ -4299,7 +4312,7 @@ dependencies = [
"pest_meta",
"proc-macro2",
"quote",
"syn 2.0.38",
"syn 2.0.39",
]
[[package]]
@ -4389,7 +4402,7 @@ checksum = "4359fd9c9171ec6e8c62926d6faaf553a8dc3f64e1507e76da7911b4f6a04405"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.38",
"syn 2.0.39",
]
[[package]]
@ -4509,7 +4522,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "7f4c021e1093a56626774e81216a4ce732a735e5bad4868a03f3ed65ca0c3919"
dependencies = [
"once_cell",
"toml_edit 0.19.10",
"toml_edit 0.19.14",
]
[[package]]
@ -4547,9 +4560,9 @@ dependencies = [
[[package]]
name = "proc-macro2"
version = "1.0.68"
version = "1.0.70"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "5b1106fec09662ec6dd98ccac0f81cef56984d0b49f75c92d8cbad76e20c005c"
checksum = "39278fbbf5fb4f646ce651690877f89d1c5811a3d4acb27700c1cb3cdb78fd3b"
dependencies = [
"unicode-ident",
]
@ -4755,7 +4768,7 @@ version = "0.6.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ec0be4795e2f6a28069bec0b5ff3e2ac9bafc99e6a9a7dc3547996c5c816922c"
dependencies = [
"getrandom 0.2.10",
"getrandom 0.2.11",
]
[[package]]
@ -4893,7 +4906,7 @@ version = "0.4.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "b033d837a7cf162d7993aded9304e30a83213c648b6e389db233191f891e5c2b"
dependencies = [
"getrandom 0.2.10",
"getrandom 0.2.11",
"redox_syscall 0.2.16",
"thiserror",
]
@ -4970,7 +4983,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "046cd98826c46c2ac8ddecae268eb5c2e58628688a5fc7a2643704a73faba95b"
dependencies = [
"async-compression",
"base64 0.21.4",
"base64 0.21.5",
"bytes 1.5.0",
"encoding_rs",
"futures-core",
@ -5094,7 +5107,7 @@ dependencies = [
"awc",
"aws-config",
"aws-sdk-s3",
"base64 0.21.4",
"base64 0.21.5",
"bb8",
"bigdecimal",
"blake3",
@ -5180,13 +5193,13 @@ name = "router_derive"
version = "0.1.0"
dependencies = [
"diesel",
"indexmap 2.0.2",
"indexmap 2.1.0",
"proc-macro2",
"quote",
"serde",
"serde_json",
"strum 0.24.1",
"syn 2.0.38",
"syn 2.0.39",
]
[[package]]
@ -5246,7 +5259,7 @@ dependencies = [
"quote",
"rust-embed-utils",
"shellexpand",
"syn 2.0.38",
"syn 2.0.39",
"walkdir",
]
@ -5404,7 +5417,7 @@ version = "1.0.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2d3987094b1d07b653b7dfdc3f70ce9a1da9c51ac18c1b06b662e4f9a0e9f4b2"
dependencies = [
"base64 0.21.4",
"base64 0.21.5",
]
[[package]]
@ -5580,9 +5593,9 @@ checksum = "388a1df253eca08550bef6c72392cfe7c30914bf41df5269b68cbd6ff8f570a3"
[[package]]
name = "serde"
version = "1.0.188"
version = "1.0.193"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "cf9e0fcba69a370eed61bcf2b728575f726b50b55cba78064753d708ddc7549e"
checksum = "25dd9975e68d0cb5aa1120c288333fc98731bd1dd12f561e468ea4728c042b89"
dependencies = [
"serde_derive",
]
@ -5600,22 +5613,22 @@ dependencies = [
[[package]]
name = "serde_derive"
version = "1.0.188"
version = "1.0.193"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "4eca7ac642d82aa35b60049a6eccb4be6be75e599bd2e9adb5f875a737654af2"
checksum = "43576ca501357b9b071ac53cdc7da8ef0cbd9493d8df094cd821777ea6e894d3"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.38",
"syn 2.0.39",
]
[[package]]
name = "serde_json"
version = "1.0.107"
version = "1.0.108"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "6b420ce6e3d8bd882e9b243c6eed35dbc9a6110c9769e74b584e0d68d1f20c65"
checksum = "3d1c7e3eac408d115102c4c24ad393e0821bb3a5df4d506a80f85f7a742a526b"
dependencies = [
"indexmap 2.0.2",
"indexmap 2.1.0",
"itoa",
"ryu",
"serde",
@ -5670,7 +5683,7 @@ checksum = "8725e1dfadb3a50f7e5ce0b1a540466f6ed3fe7a0fca2ac2b8b831d31316bd00"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.38",
"syn 2.0.39",
]
[[package]]
@ -5696,15 +5709,15 @@ dependencies = [
[[package]]
name = "serde_with"
version = "3.3.0"
version = "3.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "1ca3b16a3d82c4088f343b7480a93550b3eabe1a358569c2dfe38bbcead07237"
checksum = "64cd236ccc1b7a29e7e2739f27c0b2dd199804abc4290e32f59f3b68d6405c23"
dependencies = [
"base64 0.21.4",
"base64 0.21.5",
"chrono",
"hex",
"indexmap 1.9.3",
"indexmap 2.0.2",
"indexmap 2.1.0",
"serde",
"serde_json",
"serde_with_macros",
@ -5713,14 +5726,14 @@ dependencies = [
[[package]]
name = "serde_with_macros"
version = "3.3.0"
version = "3.4.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2e6be15c453eb305019bfa438b1593c731f36a289a7853f7707ee29e870b3b3c"
checksum = "93634eb5f75a2323b16de4748022ac4297f9e76b6dced2be287a099f41b5e788"
dependencies = [
"darling",
"proc-macro2",
"quote",
"syn 2.0.38",
"syn 2.0.39",
]
[[package]]
@ -5745,7 +5758,7 @@ checksum = "91d129178576168c589c9ec973feedf7d3126c01ac2bf08795109aa35b69fb8f"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.38",
"syn 2.0.39",
]
[[package]]
@ -5968,7 +5981,7 @@ version = "0.6.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "fa8241483a83a3f33aa5fff7e7d9def398ff9990b2752b6c6112b83c6d246029"
dependencies = [
"ahash 0.7.6",
"ahash 0.7.7",
"atoi",
"base64 0.13.1",
"bigdecimal",
@ -6147,7 +6160,7 @@ dependencies = [
"proc-macro2",
"quote",
"rustversion",
"syn 2.0.38",
"syn 2.0.39",
]
[[package]]
@ -6169,9 +6182,9 @@ dependencies = [
[[package]]
name = "syn"
version = "2.0.38"
version = "2.0.39"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e96b79aaa137db8f61e26363a0c9b47d8b4ec75da28b7d1d614c2303e232408b"
checksum = "23e78b90f2fcf45d3e842032ce32e3f2d1545ba6636271dcbf24fa306d87be7a"
dependencies = [
"proc-macro2",
"quote",
@ -6187,7 +6200,7 @@ dependencies = [
"proc-macro-error",
"proc-macro2",
"quote",
"syn 2.0.38",
"syn 2.0.39",
]
[[package]]
@ -6295,7 +6308,7 @@ dependencies = [
"proc-macro-error",
"proc-macro2",
"quote",
"syn 2.0.38",
"syn 2.0.39",
]
[[package]]
@ -6307,7 +6320,7 @@ dependencies = [
"proc-macro-error",
"proc-macro2",
"quote",
"syn 2.0.38",
"syn 2.0.39",
"test-case-core",
]
@ -6316,7 +6329,7 @@ name = "test_utils"
version = "0.1.0"
dependencies = [
"async-trait",
"base64 0.21.4",
"base64 0.21.5",
"clap",
"masking",
"rand 0.8.5",
@ -6386,7 +6399,7 @@ checksum = "10712f02019e9288794769fba95cd6847df9874d49d871d062172f9dd41bc4cc"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.38",
"syn 2.0.39",
]
[[package]]
@ -6412,9 +6425,9 @@ dependencies = [
[[package]]
name = "time"
version = "0.3.22"
version = "0.3.23"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ea9e1b3cf1243ae005d9e74085d4d542f3125458f3a81af210d901dcd7411efd"
checksum = "59e399c068f43a5d116fedaf73b203fa4f9c519f17e2b34f63221d3792f81446"
dependencies = [
"itoa",
"serde",
@ -6430,9 +6443,9 @@ checksum = "7300fbefb4dadc1af235a9cef3737cea692a9d97e1b9cbcd4ebdae6f8868e6fb"
[[package]]
name = "time-macros"
version = "0.2.9"
version = "0.2.10"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "372950940a5f07bf38dbe211d7283c9e6d7327df53794992d293e534c733d09b"
checksum = "96ba15a897f3c86766b757e5ac7221554c6750054d74d5b28844fce5fb36a6c4"
dependencies = [
"time-core",
]
@ -6576,7 +6589,7 @@ checksum = "630bdcf245f78637c13ec01ffae6187cca34625e8c63150d424b59e55af2675e"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.38",
"syn 2.0.39",
]
[[package]]
@ -6745,10 +6758,11 @@ version = "0.7.4"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d6135d499e69981f9ff0ef2167955a5333c35e36f6937d382974566b3d5b94ec"
dependencies = [
"indexmap 1.9.3",
"serde",
"serde_spanned",
"toml_datetime",
"toml_edit 0.19.10",
"toml_edit 0.19.14",
]
[[package]]
@ -6762,15 +6776,15 @@ dependencies = [
[[package]]
name = "toml_edit"
version = "0.19.10"
version = "0.19.14"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "2380d56e8670370eee6566b0bfd4265f65b3f432e8c6d85623f728d4fa31f739"
checksum = "f8123f27e969974a3dfba720fdb560be359f57b44302d280ba72e76a74480e8a"
dependencies = [
"indexmap 1.9.3",
"indexmap 2.1.0",
"serde",
"serde_spanned",
"toml_datetime",
"winnow 0.4.11",
"winnow",
]
[[package]]
@ -6779,9 +6793,9 @@ version = "0.20.2"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "396e4d48bbb2b7554c944bde63101b5ae446cff6ec4a24227428f15eb72ef338"
dependencies = [
"indexmap 2.0.2",
"indexmap 2.1.0",
"toml_datetime",
"winnow 0.5.19",
"winnow",
]
[[package]]
@ -7145,7 +7159,7 @@ version = "3.5.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "d82b1bc5417102a73e8464c686eef947bdfb99fcdfc0a4f228e81afa9526470a"
dependencies = [
"indexmap 2.0.2",
"indexmap 2.1.0",
"serde",
"serde_json",
"utoipa-gen",
@ -7160,7 +7174,7 @@ dependencies = [
"proc-macro-error",
"proc-macro2",
"quote",
"syn 2.0.38",
"syn 2.0.39",
]
[[package]]
@ -7186,7 +7200,7 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "79daa5ed5740825c40b389c5e50312b9c86df53fccd33f281df655642b43869d"
dependencies = [
"atomic",
"getrandom 0.2.10",
"getrandom 0.2.11",
"serde",
]
@ -7309,7 +7323,7 @@ dependencies = [
"once_cell",
"proc-macro2",
"quote",
"syn 2.0.38",
"syn 2.0.39",
"wasm-bindgen-shared",
]
@ -7343,7 +7357,7 @@ checksum = "54681b18a46765f095758388f2d0cf16eb8d4169b639ab575a8f5693af210c7b"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.38",
"syn 2.0.39",
"wasm-bindgen-backend",
"wasm-bindgen-shared",
]
@ -7462,10 +7476,10 @@ source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "712e227841d057c1ee1cd2fb22fa7e5a5461ae8e48fa2ca79ec42cfc1931183f"
[[package]]
name = "windows"
version = "0.48.0"
name = "windows-core"
version = "0.51.1"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e686886bc078bc1b0b600cac0147aadb815089b6e4da64016cbd754b6342700f"
checksum = "f1f8cf84f35d2db49a46868f947758c7a1138116f7fac3bc844f43ade1292e64"
dependencies = [
"windows-targets",
]
@ -7536,15 +7550,6 @@ version = "0.48.5"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "ed94fce61571a4006852b7389a063ab983c02eb1bb37b47f8272ce92d06d9538"
[[package]]
name = "winnow"
version = "0.4.11"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "656953b22bcbfb1ec8179d60734981d1904494ecc91f8a3f0ee5c7389bb8eb4b"
dependencies = [
"memchr",
]
[[package]]
name = "winnow"
version = "0.5.19"
@ -7566,13 +7571,13 @@ dependencies = [
[[package]]
name = "wiremock"
version = "0.5.19"
version = "0.5.18"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "c6f71803d3a1c80377a06221e0530be02035d5b3e854af56c6ece7ac20ac441d"
checksum = "bd7b0b5b253ebc0240d6aac6dd671c495c467420577bf634d3064ae7e6fa2b4c"
dependencies = [
"assert-json-diff",
"async-trait",
"base64 0.21.4",
"base64 0.21.5",
"deadpool",
"futures 0.3.28",
"futures-timer",
@ -7637,6 +7642,26 @@ dependencies = [
"linked-hash-map",
]
[[package]]
name = "zerocopy"
version = "0.7.26"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "e97e415490559a91254a2979b4829267a57d2fcd741a98eee8b722fb57289aa0"
dependencies = [
"zerocopy-derive",
]
[[package]]
name = "zerocopy-derive"
version = "0.7.26"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "dd7e48ccf166952882ca8bd778a43502c64f33bf94c12ebe2a7f08e5a0f6689f"
dependencies = [
"proc-macro2",
"quote",
"syn 2.0.39",
]
[[package]]
name = "zeroize"
version = "1.6.0"

View File

@ -93,4 +93,4 @@ precommit : fmt clippy test
hack:
cargo hack check --workspace --each-feature --no-dev-deps
cargo hack check --workspace --each-feature --all-targets

View File

@ -28,8 +28,8 @@ error-stack = "0.3.1"
futures = "0.3.28"
once_cell = "1.18.0"
reqwest = { version = "0.11.18", features = ["serde_json"] }
serde = { version = "1.0.163", features = ["derive", "rc"] }
serde_json = "1.0.96"
serde = { version = "1.0.193", features = ["derive", "rc"] }
serde_json = "1.0.108"
sqlx = { version = "0.6.3", features = ["postgres", "runtime-actix", "runtime-actix-native-tls", "time", "bigdecimal"] }
strum = { version = "0.25.0", features = ["derive"] }
thiserror = "1.0.43"

View File

@ -24,8 +24,8 @@ actix-web = { version = "4.3.1", optional = true }
error-stack = "0.3.1"
mime = "0.3.17"
reqwest = { version = "0.11.18", optional = true }
serde = { version = "1.0.163", features = ["derive"] }
serde_json = "1.0.96"
serde = { version = "1.0.193", features = ["derive"] }
serde_json = "1.0.108"
strum = { version = "0.25", features = ["derive"] }
time = { version = "0.3.21", features = ["serde", "serde-well-known", "std"] }
url = { version = "2.4.0", features = ["serde"] }

View File

@ -12,7 +12,7 @@ license.workspace = true
[dependencies]
error-stack = "0.3.1"
luhn = "1.0.1"
serde = { version = "1.0.163", features = ["derive"] }
serde = { version = "1.0.193", features = ["derive"] }
thiserror = "1.0.40"
time = "0.3.21"
@ -21,4 +21,4 @@ common_utils = { version = "0.1.0", path = "../common_utils" }
masking = { version = "0.1.0", path = "../masking" }
[dev-dependencies]
serde_json = "1.0.96"
serde_json = "1.0.108"

View File

@ -12,8 +12,8 @@ dummy_connector = []
[dependencies]
diesel = { version = "2.1.0", features = ["postgres"] }
serde = { version = "1.0.160", features = ["derive"] }
serde_json = "1.0.96"
serde = { version = "1.0.193", features = ["derive"] }
serde_json = "1.0.108"
strum = { version = "0.25", features = ["derive"] }
utoipa = { version = "3.3.0", features = ["preserve_order"] }
@ -21,4 +21,4 @@ utoipa = { version = "3.3.0", features = ["preserve_order"] }
router_derive = { version = "0.1.0", path = "../router_derive" }
[dev-dependencies]
serde_json = "1.0.96"
serde_json = "1.0.108"

View File

@ -30,8 +30,8 @@ regex = "1.8.4"
reqwest = { version = "0.11.18", features = ["json", "native-tls", "gzip", "multipart"] }
ring = { version = "0.16.20", features = ["std"] }
rustc-hash = "1.1.0"
serde = { version = "1.0.163", features = ["derive"] }
serde_json = "1.0.96"
serde = { version = "1.0.193", features = ["derive"] }
serde_json = "1.0.108"
serde_urlencoded = "0.7.1"
signal-hook = { version = "0.3.15", optional = true }
strum = { version = "0.24.1", features = ["derive"] }

View File

@ -0,0 +1,24 @@
[package]
name = "config_importer"
description = "Utility to convert a TOML configuration file to a list of environment variables"
version = "0.1.0"
edition.workspace = true
rust-version.workspace = true
readme = "README.md"
license.workspace = true
[package.metadata.docs.rs]
all-features = true
rustdoc-args = ["--cfg", "docsrs"]
[dependencies]
anyhow = "1.0.75"
clap = { version = "4.3.2", default-features = false, features = ["std", "derive", "help", "usage"] }
indexmap = { version = "2.1.0", optional = true }
serde = { version = "1.0.193", features = ["derive"] }
serde_json = "1.0.108"
toml = { version = "0.7.4", default-features = false, features = ["parse"] }
[features]
default = ["preserve_order"]
preserve_order = ["dep:indexmap", "serde_json/preserve_order", "toml/preserve_order"]

View File

@ -0,0 +1,41 @@
# config_importer
A simple utility tool to import a Hyperswitch TOML configuration file, convert
it into environment variable key-value pairs, and export it in the specified
format.
As of now, it supports only exporting the environment variables to a JSON format
compatible with Kubernetes, but it can be easily extended to export to a YAML
format compatible with Kubernetes or the env file format.
## Usage
You can find the usage information from the help message by specifying the
`--help` flag:
```shell
cargo run --bin config_importer -- --help
```
### Specifying the output location
If the `--output-file` flag is not specified, the utility prints the output to
stdout.
If you would like to write the output to a file instead, you can specify the
`--output-file` flag with the path to the output file:
```shell
cargo run --bin config_importer -- --input-file config/development.toml --output-file config/development.json
```
### Specifying a different prefix
If the `--prefix` flag is not specified, the default prefix `ROUTER` is
considered, which generates the environment variables accepted by the `router`
binary/application.
If you'd want to generate environment variables for the `drainer`
binary/application, then you can specify the `--prefix` flag with value
`drainer` (or `DRAINER`, both work).
```shell
cargo run --bin config_importer -- --input-file config/drainer.toml --prefix drainer
```

View File

@ -0,0 +1,43 @@
use std::path::PathBuf;
/// Utility to import a hyperswitch TOML configuration file, convert it into environment variable
/// key-value pairs, and export it in the specified format.
#[derive(clap::Parser, Debug)]
#[command(arg_required_else_help = true)]
pub(crate) struct Args {
/// Input TOML configuration file.
#[arg(short, long, value_name = "FILE")]
pub(crate) input_file: PathBuf,
/// The format to convert the environment variables to.
#[arg(
value_enum,
short = 'f',
long,
value_name = "FORMAT",
default_value = "kubernetes-json"
)]
pub(crate) output_format: OutputFormat,
/// Output file. Output will be written to stdout if not specified.
#[arg(short, long, value_name = "FILE")]
pub(crate) output_file: Option<PathBuf>,
/// Prefix to be used for each environment variable in the generated output.
#[arg(short, long, default_value = "ROUTER")]
pub(crate) prefix: String,
}
/// The output format to convert environment variables to.
#[derive(clap::ValueEnum, Clone, Copy, Debug)]
pub(crate) enum OutputFormat {
/// Converts each environment variable to an object containing `name` and `value` fields.
///
/// ```json
/// {
/// "name": "ENVIRONMENT",
/// "value": "PRODUCTION"
/// }
/// ```
KubernetesJson,
}

View File

@ -0,0 +1,98 @@
mod cli;
use std::io::{BufWriter, Write};
use anyhow::Context;
/// The separator used in environment variable names.
const ENV_VAR_SEPARATOR: &str = "__";
#[cfg(not(feature = "preserve_order"))]
type EnvironmentVariableMap = std::collections::HashMap<String, String>;
#[cfg(feature = "preserve_order")]
type EnvironmentVariableMap = indexmap::IndexMap<String, String>;
fn main() -> anyhow::Result<()> {
let args = <cli::Args as clap::Parser>::parse();
// Read input TOML file
let toml_contents =
std::fs::read_to_string(args.input_file).context("Failed to read input file")?;
let table = toml_contents
.parse::<toml::Table>()
.context("Failed to parse TOML file contents")?;
// Parse TOML file contents to a `HashMap` of environment variable name and value pairs
let env_vars = table
.iter()
.flat_map(|(key, value)| process_toml_value(&args.prefix, key, value))
.collect::<EnvironmentVariableMap>();
let writer: BufWriter<Box<dyn Write>> = match args.output_file {
// Write to file if output file is specified
Some(file) => BufWriter::new(Box::new(
std::fs::OpenOptions::new()
.create(true)
.write(true)
.truncate(true)
.open(file)
.context("Failed to open output file")?,
)),
// Write to stdout otherwise
None => BufWriter::new(Box::new(std::io::stdout().lock())),
};
// Write environment variables in specified format
match args.output_format {
cli::OutputFormat::KubernetesJson => {
let k8s_env_vars = env_vars
.into_iter()
.map(|(name, value)| KubernetesEnvironmentVariable { name, value })
.collect::<Vec<_>>();
serde_json::to_writer_pretty(writer, &k8s_env_vars)
.context("Failed to serialize environment variables as JSON")?
}
}
Ok(())
}
fn process_toml_value(
prefix: impl std::fmt::Display + Clone,
key: impl std::fmt::Display + Clone,
value: &toml::Value,
) -> Vec<(String, String)> {
let key_with_prefix = format!("{prefix}{ENV_VAR_SEPARATOR}{key}").to_ascii_uppercase();
match value {
toml::Value::String(s) => vec![(key_with_prefix, s.to_owned())],
toml::Value::Integer(i) => vec![(key_with_prefix, i.to_string())],
toml::Value::Float(f) => vec![(key_with_prefix, f.to_string())],
toml::Value::Boolean(b) => vec![(key_with_prefix, b.to_string())],
toml::Value::Datetime(dt) => vec![(key_with_prefix, dt.to_string())],
toml::Value::Array(values) => {
if values.is_empty() {
return vec![(key_with_prefix, String::new())];
}
// This logic does not support / account for arrays of tables or arrays of arrays.
let (_processed_keys, processed_values) = values
.iter()
.flat_map(|v| process_toml_value(prefix.clone(), key.clone(), v))
.unzip::<_, _, Vec<String>, Vec<String>>();
vec![(key_with_prefix, processed_values.join(","))]
}
toml::Value::Table(map) => map
.into_iter()
.flat_map(|(k, v)| process_toml_value(key_with_prefix.clone(), k, v))
.collect(),
}
}
/// The Kubernetes environment variable structure containing a name and a value.
#[derive(Debug, serde::Serialize, serde::Deserialize)]
pub(crate) struct KubernetesEnvironmentVariable {
name: String,
value: String,
}

View File

@ -12,5 +12,5 @@ common_enums = { version = "0.1.0", path = "../common_enums", package = "common_
# Third party crates
rust_decimal = "1.29"
rusty-money = { version = "0.4.0", features = ["iso", "crypto"] }
serde = { version = "1.0.163", features = ["derive"] }
serde = { version = "1.0.193", features = ["derive"] }
thiserror = "1.0.43"

View File

@ -22,7 +22,7 @@ diesel_models = { version = "0.1.0", path = "../diesel_models", features = ["kv_
# Third party deps
async-trait = "0.1.68"
error-stack = "0.3.1"
serde = { version = "1.0.163", features = ["derive"] }
serde_json = "1.0.96"
serde = { version = "1.0.193", features = ["derive"] }
serde_json = "1.0.108"
thiserror = "1.0.40"
time = { version = "0.3.21", features = ["serde", "serde-well-known", "std"] }

View File

@ -17,8 +17,8 @@ diesel = { version = "2.1.0", features = ["postgres", "serde_json", "time", "64-
error-stack = "0.3.1"
frunk = "0.4.1"
frunk_core = "0.4.1"
serde = { version = "1.0.163", features = ["derive"] }
serde_json = "1.0.96"
serde = { version = "1.0.193", features = ["derive"] }
serde_json = "1.0.108"
strum = { version = "0.24.1", features = ["derive"] }
thiserror = "1.0.40"
time = { version = "0.3.21", features = ["serde", "serde-well-known", "std"] }

View File

@ -20,9 +20,9 @@ config = { version = "0.13.3", features = ["toml"] }
diesel = { version = "2.1.0", features = ["postgres"] }
error-stack = "0.3.1"
once_cell = "1.18.0"
serde = "1.0.163"
serde_json = "1.0.96"
serde_path_to_error = "0.1.11"
serde = "1.0.193"
serde_json = "1.0.108"
serde_path_to_error = "0.1.14"
thiserror = "1.0.40"
tokio = { version = "1.28.2", features = ["macros", "rt-multi-thread"] }

View File

@ -12,8 +12,8 @@ frunk_core = "0.4.1"
nom = { version = "7.1.3", features = ["alloc"], optional = true }
once_cell = "1.18.0"
rustc-hash = "1.1.0"
serde = { version = "1.0.163", features = ["derive", "rc"] }
serde_json = "1.0.96"
serde = { version = "1.0.193", features = ["derive", "rc"] }
serde_json = "1.0.108"
strum = { version = "0.25", features = ["derive"] }
thiserror = "1.0.43"

View File

@ -22,7 +22,7 @@ base64 = "0.21.2"
dyn-clone = "1.0.11"
error-stack = "0.3.1"
once_cell = "1.18.0"
serde = { version = "1.0.163", features = ["derive"] }
serde = { version = "1.0.193", features = ["derive"] }
thiserror = "1.0.40"
tokio = "1.28.2"
hyper-proxy = "0.9.1"

View File

@ -16,8 +16,8 @@ euclid = { version = "0.1.0", path = "../euclid" }
masking = { version = "0.1.0", path = "../masking/" }
# Third party crates
serde = "1.0.163"
serde_json = "1.0.96"
serde = "1.0.193"
serde_json = "1.0.108"
thiserror = "1.0.43"
[dev-dependencies]

View File

@ -20,9 +20,9 @@ rustdoc-args = ["--cfg", "docsrs"]
bytes = { version = "1", optional = true }
diesel = { version = "2.1.0", features = ["postgres", "serde_json", "time"], optional = true }
serde = { version = "1", features = ["derive"], optional = true }
serde_json = { version = "1.0.96", optional = true }
serde_json = { version = "1.0.108", optional = true }
subtle = "=2.4.1"
zeroize = { version = "1.6", default-features = false }
[dev-dependencies]
serde_json = "1.0.96"
serde_json = "1.0.108"

View File

@ -117,7 +117,7 @@ fn without_serialize() -> Result<(), Box<dyn std::error::Error + Send + Sync>> {
#[test]
fn for_string() -> Result<(), Box<dyn std::error::Error + Send + Sync>> {
#[cfg_attr(feature = "serde", derive(Serialize))]
#[cfg_attr(all(feature = "alloc", feature = "serde"), derive(Serialize))]
#[derive(Clone, Debug, PartialEq, Eq)]
pub struct Composite {
secret_number: Secret<String>,
@ -147,7 +147,7 @@ fn for_string() -> Result<(), Box<dyn std::error::Error + Send + Sync>> {
// serialize
#[cfg(feature = "serde")]
#[cfg(all(feature = "alloc", feature = "serde"))]
{
let got = serde_json::to_string(&composite).unwrap();
let exp = r#"{"secret_number":"abc","not_secret":"not secret"}"#;

View File

@ -21,7 +21,7 @@ bytes = "1.4.0"
error-stack = "0.3.1"
http = "0.2.9"
mime = "0.3.17"
serde = "1.0.159"
serde_json = "1.0.91"
serde = "1.0.193"
serde_json = "1.0.108"
strum = { version = "0.24.1", features = ["derive"] }
thiserror = "1.0.43"

View File

@ -11,7 +11,7 @@ license.workspace = true
error-stack = "0.3.1"
fred = { version = "6.3.0", features = ["metrics", "partial-tracing", "subscriber-client"] }
futures = "0.3"
serde = { version = "1.0.163", features = ["derive"] }
serde = { version = "1.0.193", features = ["derive"] }
thiserror = "1.0.40"
tokio = "1.28.2"

View File

@ -79,12 +79,12 @@ ring = "0.16.20"
roxmltree = "0.18.0"
rust_decimal = { version = "1.30.0", features = ["serde-with-float", "serde-with-str"] }
rustc-hash = "1.1.0"
serde = { version = "1.0.163", features = ["derive"] }
serde_json = "1.0.96"
serde_path_to_error = "0.1.11"
serde = { version = "1.0.193", features = ["derive"] }
serde_json = "1.0.108"
serde_path_to_error = "0.1.14"
serde_qs = { version = "0.12.0", optional = true }
serde_urlencoded = "0.7.1"
serde_with = "3.0.0"
serde_with = "3.4.0"
sha-1 = { version = "0.9" }
sqlx = { version = "0.6.3", features = ["postgres", "runtime-actix", "runtime-actix-native-tls", "time", "bigdecimal"] }
strum = { version = "0.25", features = ["derive"] }
@ -134,7 +134,7 @@ rand = "0.8.5"
serial_test = "2.0.0"
time = { version = "0.3.21", features = ["macros"] }
tokio = "1.28.2"
wiremock = "0.5"
wiremock = "0.5.18"
# First party dev-dependencies
test_utils = { version = "0.1.0", path = "../test_utils" }

View File

@ -12,7 +12,7 @@ proc-macro = true
doctest = false
[dependencies]
indexmap = "2.0.0"
indexmap = "2.1.0"
proc-macro2 = "1.0.56"
quote = "1.0.26"
syn = { version = "2.0.5", features = ["full", "extra-traits"] } # the full feature does not seem to encompass all the features
@ -20,6 +20,6 @@ strum = { version = "0.24.1", features = ["derive"] }
[dev-dependencies]
diesel = { version = "2.1.0", features = ["postgres"] }
serde = { version = "1.0.163", features = ["derive"] }
serde_json = "1.0.96"
serde = { version = "1.0.193", features = ["derive"] }
serde_json = "1.0.108"

View File

@ -16,9 +16,9 @@ once_cell = "1.18.0"
opentelemetry = { version = "0.19.0", features = ["rt-tokio-current-thread", "metrics"] }
opentelemetry-otlp = { version = "0.12.0", features = ["metrics"] }
rustc-hash = "1.1"
serde = { version = "1.0.163", features = ["derive"] }
serde_json = "1.0.96"
serde_path_to_error = "0.1.11"
serde = { version = "1.0.193", features = ["derive"] }
serde_json = "1.0.108"
serde_path_to_error = "0.1.14"
strum = { version = "0.24.1", features = ["derive"] }
time = { version = "0.3.21", default-features = false, features = ["formatting"] }
tokio = { version = "1.28.2" }

View File

@ -15,8 +15,8 @@ error-stack = "0.3.1"
futures = "0.3.28"
once_cell = "1.18.0"
rand = "0.8.5"
serde = "1.0.163"
serde_json = "1.0.96"
serde = "1.0.193"
serde_json = "1.0.108"
strum = { version = "0.24.1", features = ["derive"] }
thiserror = "1.0.40"
time = { version = "0.3.21", features = ["serde", "serde-well-known", "std"] }

View File

@ -41,7 +41,7 @@ mime = "0.3.17"
moka = { version = "0.11.3", features = ["future"] }
once_cell = "1.18.0"
ring = "0.16.20"
serde = { version = "1.0.185", features = ["derive"] }
serde_json = "1.0.105"
serde = { version = "1.0.193", features = ["derive"] }
serde_json = "1.0.108"
thiserror = "1.0.40"
tokio = { version = "1.28.2", features = ["rt-multi-thread"] }

View File

@ -18,8 +18,8 @@ base64 = "0.21.2"
clap = { version = "4.3.2", default-features = false, features = ["std", "derive", "help", "usage"] }
rand = "0.8.5"
reqwest = { version = "0.11.18", features = ["native-tls"] }
serde = { version = "1.0.163", features = ["derive"] }
serde_json = "1.0.96"
serde = { version = "1.0.193", features = ["derive"] }
serde_json = "1.0.108"
serde_urlencoded = "0.7.1"
serial_test = "2.0.0"
thirtyfour = "0.31.0"