mirror of
https://github.com/sudosylabs/vnidrop.git
synced 2026-08-05 18:39:55 +02:00
Add a single source of truth (root app.properties) for public app-wide constants, injected at build time on both platforms instead of hardcoding. - Apple: generate-appconfig.sh -> Generated/AppConfig.swift (wired into `make apple-app-config`), consumed as AppConfig.privacyPolicyURL. - KMP: generateAppConfig task -> AppConfig.kt (mirrors DiagnosticsBuildConfig), consumed as AppConfig.PRIVACY_POLICY_URL. Replaces the stale hardcoded privacy-policy URL on both sides with https://vnidrop.sudosy.fr/privacy/. Also fix the Apple release core build: disable release LTO in build-core.sh (Cargo forbids lto in a build-override) to avoid the proc-macro "mis-aligned LINKEDIT string pool" corruption, so release archives are compact instead of shipping the debug core. Update the app icon. Tests: shell test for the generator (escaping, missing/duplicate key), plus XCTest and jvmTest asserting the generated value matches app.properties.
45 lines
1.5 KiB
Bash
Executable File
45 lines
1.5 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
# Generates apple/VniDrop/Generated/AppConfig.swift from the shared app.properties
|
|
# so app-wide constants (privacy policy URL, …) have a single source of truth
|
|
# across Apple and KMP. Regenerate instead of editing the output.
|
|
|
|
set -euo pipefail
|
|
|
|
script_dir="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)"
|
|
repo_root="$(cd "$script_dir/../.." && pwd)"
|
|
config_file="${VNIDROP_APP_PROPERTIES:-$repo_root/app.properties}"
|
|
output_dir="${VNIDROP_APPLE_GENERATED_DIR:-$repo_root/apple/VniDrop/Generated}"
|
|
|
|
read_property() {
|
|
local key=$1
|
|
local value
|
|
value="$(sed -n "s/^${key}=//p" "$config_file")"
|
|
[[ -n "$value" ]] || { printf 'Missing %s in %s\n' "$key" "$config_file" >&2; exit 1; }
|
|
[[ $(printf '%s\n' "$value" | wc -l | tr -d ' ') == 1 ]] ||
|
|
{ printf 'Duplicate %s in %s\n' "$key" "$config_file" >&2; exit 1; }
|
|
printf '%s' "$value"
|
|
}
|
|
|
|
# Escape for a Swift string literal.
|
|
swift_escape() {
|
|
printf '%s' "$1" | sed -e 's/\\/\\\\/g' -e 's/"/\\"/g'
|
|
}
|
|
|
|
privacy_url="$(read_property PRIVACY_POLICY_URL)"
|
|
|
|
mkdir -p "$output_dir"
|
|
tmp="$(mktemp "$output_dir/.AppConfig.swift.XXXXXX")"
|
|
cat > "$tmp" <<EOF
|
|
// Generated by apple/scripts/generate-appconfig.sh from app.properties.
|
|
// Regenerate this file instead of editing it.
|
|
|
|
import Foundation
|
|
|
|
/// App-wide constants injected at build time from the shared \`app.properties\`.
|
|
enum AppConfig {
|
|
static let privacyPolicyURL = URL(string: "$(swift_escape "$privacy_url")")!
|
|
}
|
|
EOF
|
|
mv "$tmp" "$output_dir/AppConfig.swift"
|