mirror of
https://github.com/sudosylabs/vnidrop.git
synced 2026-08-05 10:29:58 +02:00
refactor(version): derive Apple build numbers
This commit is contained in:
@@ -35,8 +35,8 @@ validate_canonical_integer() {
|
||||
product_version="$(read_property PRODUCT_VERSION)"
|
||||
release_channel="$(read_property RELEASE_CHANNEL)"
|
||||
android_version_code="$(read_property ANDROID_VERSION_CODE)"
|
||||
apple_build_number="$(read_property APPLE_BUILD_NUMBER)"
|
||||
windows_version_epoch="$(read_property WINDOWS_VERSION_EPOCH)"
|
||||
build_time_utc="${VNIDROP_BUILD_TIME_UTC:-$(date -u +%Y%m%d%H%M%S)}"
|
||||
|
||||
[[ $product_version =~ ^(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)\.(0|[1-9][0-9]*)$ ]] ||
|
||||
fail "PRODUCT_VERSION must use canonical MAJOR.MINOR.PATCH integers"
|
||||
@@ -47,9 +47,41 @@ validate_canonical_integer "PRODUCT_VERSION patch" "$product_patch" 0 65535
|
||||
[[ $release_channel =~ ^[a-z][a-z0-9-]*$ ]] ||
|
||||
fail "RELEASE_CHANNEL must start with a lowercase letter and contain only lowercase letters, digits, and hyphens"
|
||||
validate_canonical_integer "ANDROID_VERSION_CODE" "$android_version_code" 1 2100000000
|
||||
[[ $apple_build_number =~ ^[1-9][0-9]*(\.[0-9]+){0,2}$ ]] ||
|
||||
fail "APPLE_BUILD_NUMBER must contain one to three period-separated non-negative integers and start above zero"
|
||||
validate_canonical_integer "WINDOWS_VERSION_EPOCH" "$windows_version_epoch" 1 65535
|
||||
[[ $build_time_utc =~ ^[0-9]{14}$ ]] ||
|
||||
fail "VNIDROP_BUILD_TIME_UTC must use YYYYMMDDHHMMSS"
|
||||
|
||||
build_month="${build_time_utc:4:2}"
|
||||
build_day="${build_time_utc:6:2}"
|
||||
build_hour="${build_time_utc:8:2}"
|
||||
build_minute="${build_time_utc:10:2}"
|
||||
build_second="${build_time_utc:12:2}"
|
||||
build_year="${build_time_utc:0:4}"
|
||||
(( 10#$build_year >= 1 )) ||
|
||||
fail "VNIDROP_BUILD_TIME_UTC contains an invalid year"
|
||||
(( 10#$build_month >= 1 && 10#$build_month <= 12 )) ||
|
||||
fail "VNIDROP_BUILD_TIME_UTC contains an invalid month"
|
||||
|
||||
case $((10#$build_month)) in
|
||||
2)
|
||||
max_build_day=28
|
||||
if (( 10#$build_year % 400 == 0 ||
|
||||
(10#$build_year % 4 == 0 && 10#$build_year % 100 != 0) )); then
|
||||
max_build_day=29
|
||||
fi
|
||||
;;
|
||||
4|6|9|11)
|
||||
max_build_day=30
|
||||
;;
|
||||
*)
|
||||
max_build_day=31
|
||||
;;
|
||||
esac
|
||||
(( 10#$build_day >= 1 && 10#$build_day <= max_build_day )) ||
|
||||
fail "VNIDROP_BUILD_TIME_UTC contains an invalid day"
|
||||
(( 10#$build_hour <= 23 && 10#$build_minute <= 59 && 10#$build_second <= 59 )) ||
|
||||
fail "VNIDROP_BUILD_TIME_UTC contains an invalid time"
|
||||
apple_build_number="${build_time_utc:0:8}.${build_time_utc:8:4}.${build_time_utc:12:2}"
|
||||
|
||||
windows_major=$((10#$product_major + 10#$windows_version_epoch))
|
||||
(( windows_major <= 65535 )) ||
|
||||
@@ -74,7 +106,10 @@ case "${1:-verify}" in
|
||||
android-code)
|
||||
printf '%s\n' "$android_version_code"
|
||||
;;
|
||||
apple-build)
|
||||
apple-store-build)
|
||||
printf '%s\n' "$apple_build_number"
|
||||
;;
|
||||
apple-direct-build)
|
||||
printf '%s\n' "$apple_build_number"
|
||||
;;
|
||||
windows-package)
|
||||
@@ -82,14 +117,14 @@ case "${1:-verify}" in
|
||||
;;
|
||||
verify)
|
||||
verify_tag
|
||||
printf 'VniDrop %s (%s), Android %s, Apple %s, MSIX %s\n' \
|
||||
printf 'VniDrop %s (%s), Android %s, Apple Store %s, Apple Direct %s, MSIX %s\n' \
|
||||
"$product_version" "$release_channel" "$android_version_code" \
|
||||
"$apple_build_number" "$windows_package_version"
|
||||
"$apple_build_number" "$apple_build_number" "$windows_package_version"
|
||||
;;
|
||||
verify-tag)
|
||||
verify_tag "${2:-}"
|
||||
;;
|
||||
*)
|
||||
fail "Usage: $0 {product|channel|android-code|apple-build|windows-package|verify|verify-tag [tag]}"
|
||||
fail "Usage: $0 {product|channel|android-code|apple-store-build|apple-direct-build|windows-package|verify|verify-tag [tag]}"
|
||||
;;
|
||||
esac
|
||||
|
||||
Reference in New Issue
Block a user