mirror of
https://github.com/keymanapp/keyman.git
synced 2026-08-06 08:55:34 +00:00
90 lines
No EOL
3 KiB
Bash
90 lines
No EOL
3 KiB
Bash
#
|
|
# Keyman is copyright (C) SIL Global. MIT License.
|
|
#
|
|
# Created by mcdurdin on 2025-04-30
|
|
#
|
|
# Test that resources in our repository match the expected minimum versions,
|
|
# where possible. Uses a variety of mechanisms to extract the version
|
|
#
|
|
|
|
. "${KEYMAN_ROOT}/resources/build/jq.inc.sh"
|
|
|
|
#
|
|
# Tests that the referenced filename has the expected version
|
|
# found in the input variable. The actual version is extracted
|
|
# with a helper function named _minver_test_$variable, which
|
|
# parses the file or its metadata, as this may vary considerably
|
|
#
|
|
# Parameters
|
|
# 1: variable the name of the environment variable to test
|
|
# 2: filename the file to test the version against
|
|
#
|
|
_minver_test() {
|
|
local variable="$1"
|
|
local filename="$2"
|
|
|
|
local actual_version="$(_minver_test_${variable} "$filename")"
|
|
local -n expected_version="${variable}"
|
|
|
|
builder_echo "Testing \$$1, expecting '$expected_version'"
|
|
if [[ "$expected_version" != "$actual_version" ]]; then
|
|
builder_die "$filename: expected '$expected_version', actual version in repo is '$actual_version'"
|
|
fi
|
|
}
|
|
|
|
_minver_test_KEYMAN_VERSION_LANGUAGE_SUBTAG_REGISTRY() {
|
|
# language-subtag-registry format:
|
|
# File-Date: 2025-03-10
|
|
head "$1" -n 1 | cut -d" " -f 2 -
|
|
}
|
|
|
|
_minver_test_KEYMAN_VERSION_UNICODE() {
|
|
# Blocks.txt format:
|
|
# # Blocks-16.0.0.txt
|
|
head "$1" -n 1 | cut -d- -f 2 - | cut -d. -f 1,2,3 -
|
|
}
|
|
|
|
_minver_test_KEYMAN_VERSION_LANGTAGS() {
|
|
# entry with tag '_version'
|
|
"$JQ" -r -c '.[] | select(.tag == "_version") .date' "$1"
|
|
}
|
|
|
|
_minver_test_KEYMAN_VERSION_CLDR() {
|
|
# finds the folder with the expected name
|
|
## find "$1" -name '[0-9][0-9]' -type d -printf '%f'
|
|
# note macos find does not support -printf, so went with this:
|
|
find "$1" -name '[0-9][0-9]' -type d -exec basename {} \;
|
|
}
|
|
|
|
_minver_test_KEYMAN_VERSION_ISO639_3() {
|
|
# git commit log for last commit for the file
|
|
git log -1 --format="%cs" -- "$1"
|
|
}
|
|
|
|
_minver_test_KEYMAN_VERSION_ICU() {
|
|
# source_filename = icu4c-73_1-src.tgz
|
|
grep "source_filename" "$1" | cut -d- -f 2 - | tr _ .
|
|
}
|
|
|
|
_minver_test_KEYMAN_MIN_VERSION_NODE_MAJOR() {
|
|
# package.json, major.minor.patch, we use only major
|
|
"$JQ" -r '.engines.node' "$1" | cut -d. -f 1 -
|
|
}
|
|
|
|
#
|
|
# Test that the minimum version of imported resources matches as expected
|
|
#
|
|
minver_test_all() {
|
|
local STANDARDS_DATA="$KEYMAN_ROOT/resources/standards-data"
|
|
|
|
_minver_test KEYMAN_MIN_VERSION_NODE_MAJOR "$KEYMAN_ROOT/package.json"
|
|
|
|
_minver_test KEYMAN_VERSION_ICU "$KEYMAN_ROOT/core/subprojects/icu-minimal.wrap"
|
|
|
|
_minver_test KEYMAN_VERSION_LANGUAGE_SUBTAG_REGISTRY "$STANDARDS_DATA/language-subtag-registry/language-subtag-registry"
|
|
_minver_test KEYMAN_VERSION_UNICODE "$STANDARDS_DATA/unicode-character-database/Blocks.txt"
|
|
_minver_test KEYMAN_VERSION_UNICODE "$STANDARDS_DATA/unicode-character-database/WordBreakProperty.txt"
|
|
_minver_test KEYMAN_VERSION_LANGTAGS "$STANDARDS_DATA/langtags/langtags.json"
|
|
_minver_test KEYMAN_VERSION_CLDR "$STANDARDS_DATA/ldml-keyboards/"
|
|
_minver_test KEYMAN_VERSION_ISO639_3 "$STANDARDS_DATA/iso639-3/iso639-3.tab"
|
|
} |