Files
shorebird-workspace/scripts/verify_open_infrastructure_defaults.sh
T
2026-06-26 01:42:06 +08:00

122 lines
4.8 KiB
Bash
Executable File

#!/usr/bin/env bash
set -euo pipefail
ROOT="$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)"
fail() {
echo "error: $*" >&2
exit 70
}
require_contains() {
local path="$1"
local needle="$2"
grep -Fq "$needle" "$path" || fail "$path is missing required text: $needle"
}
reject_contains() {
local path="$1"
local needle="$2"
if grep -Fq "$needle" "$path"; then
fail "$path contains forbidden text: $needle"
fi
}
check_forbidden_in_file() {
local path="$1"
local pattern
[[ -f "$path" ]] || fail "missing open-infrastructure check input: $path"
for pattern in "${FORBIDDEN_PATTERNS[@]}"; do
reject_contains "$path" "$pattern"
done
}
check_forbidden_in_tree() {
local tree="$1"
local extension="$2"
local path
[[ -d "$tree" ]] || fail "missing open-infrastructure check tree: $tree"
while IFS= read -r -d '' path; do
check_forbidden_in_file "$path"
done < <(find "$tree" -type f -name "*.$extension" -print0)
}
FORBIDDEN_PATTERNS=(
"https://download.shorebird.dev"
"download.shorebird.dev"
"api.shorebird.dev"
"auth.shorebird.dev"
"console.shorebird.dev"
"cdn.shorebird.cloud"
"git@github.com:shorebirdtech/dart-sdk.git"
"github.com/shorebirdtech/updater.git"
"github.com/shorebirdtech/flutter.git"
"shorebird-dart-sdk-prebuilt"
"shorebirdtech/_build_engine"
)
BUILD_SENSITIVE_FILES=(
"$ROOT/.gitmodules"
"$ROOT/flutter/DEPS"
"$ROOT/flutter/bin/internal/update_dart_sdk.ps1"
"$ROOT/flutter/bin/internal/update_dart_sdk.sh"
"$ROOT/flutter/dev/bots/post_process_docs.dart"
"$ROOT/flutter/dev/bots/unpublish_package.dart"
"$ROOT/flutter/dev/integration_tests/pure_android_host_apps/android_host_app_v2_embedding/settings.gradle"
"$ROOT/flutter/dev/integration_tests/pure_android_host_apps/host_app_kotlin_gradle_dsl/settings.gradle.kts"
"$ROOT/flutter/dev/tools/create_api_docs.dart"
"$ROOT/flutter/engine/src/flutter/build/zip_bundle.gni"
"$ROOT/flutter/engine/src/flutter/lib/web_ui/dev/steps/copy_artifacts_step.dart"
"$ROOT/flutter/packages/flutter_tools/gradle/aar_init_script.gradle"
"$ROOT/flutter/packages/flutter_tools/gradle/src/main/kotlin/FlutterPluginConstants.kt"
"$ROOT/flutter/packages/flutter_tools/lib/src/cache.dart"
"$ROOT/flutter/packages/flutter_tools/lib/src/http_host_validator.dart"
"$ROOT/flutter/packages/flutter_tools/pubspec.yaml"
"$ROOT/flutter/packages/shorebird_tests/test/shorebird_tests.dart"
"$ROOT/scripts/write_gclient.sh"
"$ROOT/shorebird/bin/shorebird.ps1"
"$ROOT/shorebird/third_party/flutter/bin/internal/shared.sh"
"$ROOT/updater/library/src/config.rs"
)
for path in "${BUILD_SENSITIVE_FILES[@]}"; do
check_forbidden_in_file "$path"
done
check_forbidden_in_tree "$ROOT/shorebird/packages/artifact_proxy/lib" dart
check_forbidden_in_tree "$ROOT/shorebird/packages/shorebird_cli/lib" dart
check_forbidden_in_tree "$ROOT/shorebird/packages/shorebird_code_push_client/lib" dart
require_contains "$ROOT/.gitmodules" "https://github.com/tony-cloud/dart-sdk.git"
require_contains "$ROOT/.gitmodules" "https://github.com/tony-cloud/flutter.git"
require_contains "$ROOT/.gitmodules" "https://git.tonycloud.org/flutter/shorebird.git"
require_contains "$ROOT/.gitmodules" "https://git.tonycloud.org/flutter/shorebird-server.git"
require_contains "$ROOT/.gitmodules" "https://git.tonycloud.org/flutter/shorebird-updater.git"
require_contains "$ROOT/flutter/DEPS" '"dart_sdk_git": "https://github.com/tony-cloud/dart-sdk.git"'
require_contains "$ROOT/flutter/DEPS" '"updater_git": "https://git.tonycloud.org/flutter/shorebird-updater.git"'
require_contains "$ROOT/flutter/packages/flutter_tools/lib/src/cache.dart" \
"kOpenFlutterStorageUrl = 'http://localhost:8080/download.flutter.io'"
require_contains "$ROOT/flutter/bin/internal/update_dart_sdk.sh" \
"http://localhost:8080/download.flutter.io"
require_contains "$ROOT/flutter/bin/internal/update_dart_sdk.ps1" \
"http://localhost:8080/download.flutter.io"
require_contains "$ROOT/flutter/packages/flutter_tools/gradle/src/main/kotlin/FlutterPluginConstants.kt" \
'DEFAULT_MAVEN_HOST = "http://localhost:8080/download.flutter.io"'
require_contains "$ROOT/flutter/dev/tools/create_api_docs.dart" \
"Platform.environment['FLUTTER_STORAGE_BASE_URL']"
require_contains "$ROOT/flutter/packages/shorebird_tests/test/shorebird_tests.dart" \
"'FLUTTER_STORAGE_BASE_URL': 'http://localhost:8080/download.flutter.io'"
require_contains "$ROOT/shorebird/packages/shorebird_cli/lib/src/shorebird_env.dart" \
"defaultHostedUrl = 'http://localhost:8080'"
require_contains "$ROOT/shorebird/packages/shorebird_cli/lib/src/cache.dart" \
"defaultArtifactBaseUrl = 'http://localhost:8080/artifacts'"
require_contains "$ROOT/updater/library/src/config.rs" \
'const DEFAULT_BASE_URL: &str = "http://localhost:8080";'
echo "open infrastructure defaults check passed"