mirror of
https://github.com/keymanapp/keyman.git
synced 2026-08-05 00:15:32 +00:00
maint(common): consolidate write_download_info functions
Fixes: #14259 Build-bot: skip Test-bot: skip
This commit is contained in:
parent
9cabc3d56e
commit
a25202530e
4 changed files with 57 additions and 129 deletions
|
|
@ -109,12 +109,11 @@ if builder_start_action archive; then
|
|||
# Write download info files
|
||||
#
|
||||
|
||||
cd "${UPLOAD_PATH}"
|
||||
write_download_info "Keyman Engine for Android" "${KEYMAN_ENGINE_ANDROID_ZIP}" "${KEYMAN_VERSION}" "${KEYMAN_TIER}" "android"
|
||||
write_download_info "Keyman for Android" "${KEYMAN_APK}" "${KEYMAN_VERSION}" "${KEYMAN_TIER}" "android"
|
||||
write_download_info "${UPLOAD_PATH}" "${KEYMAN_ENGINE_ANDROID_ZIP}" "Keyman Engine for Android" zip android
|
||||
write_download_info "${UPLOAD_PATH}" "${KEYMAN_APK}" "Keyman for Android" apk android
|
||||
|
||||
if [ "${RELEASE_OEM_FIRSTVOICES-false}" = true ]; then
|
||||
write_download_info "FirstVoices Keyboards" "${FIRSTVOICES_APK}" "${KEYMAN_VERSION}" "${KEYMAN_TIER}" "android"
|
||||
if [[ "${RELEASE_OEM_FIRSTVOICES-false}" = true ]]; then
|
||||
write_download_info "${UPLOAD_PATH}" "${FIRSTVOICES_APK}" "FirstVoices Keyboards" apk android
|
||||
fi
|
||||
|
||||
builder_finish_action success archive
|
||||
|
|
|
|||
|
|
@ -129,11 +129,9 @@ fi
|
|||
# Write download info files
|
||||
#
|
||||
|
||||
cd "${UPLOAD_DIR}"
|
||||
write_download_info "${UPLOAD_DIR}" "${KMEI_DST_NAME}" "Keyman Engine for iOS" zip ios
|
||||
write_download_info "${UPLOAD_DIR}" "${KEYMANAPP_IPA_DST}" "Keyman for iPhone and iPad" ipa ios
|
||||
|
||||
write_download_info "Keyman Engine for iOS" "${KMEI_DST_NAME}" "${BUILD_NUMBER}" "${KEYMAN_TIER}" "ios"
|
||||
write_download_info "Keyman for iPhone and iPad" "${KEYMANAPP_IPA_DST}" "${BUILD_NUMBER}" "${KEYMAN_TIER}" "ios"
|
||||
|
||||
if [ ${RELEASE_OEM_FIRSTVOICES} = true ]; then
|
||||
write_download_info "FirstVoices Keyboards" "${FIRSTVOICESAPP_IPA_DST}" "${BUILD_NUMBER}" "${KEYMAN_TIER}" "ios"
|
||||
if [[ ${RELEASE_OEM_FIRSTVOICES} = true ]]; then
|
||||
write_download_info "${UPLOAD_DIR}" "${FIRSTVOICESAPP_IPA_DST}" "FirstVoices Keyboards" ipa ios
|
||||
fi
|
||||
|
|
|
|||
|
|
@ -16,7 +16,7 @@ verify_on_mac() {
|
|||
projects=("android" "ios" "linux" "lmlayer" "mac" "web" "windows")
|
||||
|
||||
# Used to validate a specified 'project' parameter.
|
||||
verify_project() {
|
||||
_verify_project() {
|
||||
match=false
|
||||
for proj in "${projects[@]}"
|
||||
do
|
||||
|
|
@ -88,79 +88,64 @@ dl_info_display_usage() {
|
|||
exit 1
|
||||
}
|
||||
|
||||
#
|
||||
# Write ${UPLOAD_DIR}/${ARTIFACT_FILENAME}.download_info file for the target
|
||||
# artifact
|
||||
#
|
||||
# Parameters:
|
||||
# 1: UPLOAD_DIR Directory where artifact can be found
|
||||
# 2: ARTIFACT_FILENAME Filename (without path) of artifact
|
||||
# 3: ARTIFACT_NAME Descriptive name of artifact
|
||||
# 4: ARTIFACT_TYPE File extension of artifact, without initial period (e.g. tar.gz)
|
||||
# 5: PLATFORM Target platform for artifact
|
||||
#
|
||||
write_download_info() {
|
||||
#Process file & path information.
|
||||
PRODUCT_NAME="$1"
|
||||
BASE_PATH="$2"
|
||||
KM_VERSION="$3"
|
||||
KM_TIER="$4"
|
||||
KM_PLATFORM="$5"
|
||||
local UPLOAD_DIR="$1"
|
||||
local ARTIFACT_FILENAME="$2"
|
||||
local ARTFIACT_NAME="$3"
|
||||
local ARTIFACT_TYPE="$4"
|
||||
local PLATFORM="$5"
|
||||
|
||||
verify_project "$KM_PLATFORM"
|
||||
local DATE HASH SIZE DOWNLOAD_INFO STAT_FLAGS
|
||||
|
||||
BASE_DIR=$(dirname "${BASE_PATH}")
|
||||
BASE_FILE=$(basename "${BASE_PATH}");
|
||||
_verify_project "${PLATFORM}"
|
||||
|
||||
if ([ -h "${BASE_DIR}" ]) then
|
||||
while([ -h "${BASE_DIR}" ]) do BASE_PATH=`readlink "${BASE_DIR}"`;
|
||||
done
|
||||
fi
|
||||
|
||||
assertFileExists "$2"
|
||||
|
||||
pushd . > /dev/null
|
||||
cd `dirname ${BASE_DIR}` > /dev/null
|
||||
BASE_PATH=`pwd`;
|
||||
popd > /dev/null
|
||||
|
||||
DEST_DIR="$BASE_DIR"
|
||||
|
||||
#Process version parameter.
|
||||
assertValidVersionNbr "$3"
|
||||
KM_BLD_COUNTER="$((${KM_VERSION##*.}))"
|
||||
|
||||
if [ "$KM_VERSION" = "" ]; then
|
||||
builder_die "Required -version parameter not specified!"
|
||||
fi
|
||||
|
||||
if [ "$KM_TIER" = "" ]; then
|
||||
builder_die "Required -tier parameter not specified!"
|
||||
fi
|
||||
|
||||
DOWNLOAD_INFO_FILEPATH="${BASE_PATH}/${BASE_FILE}.download_info"
|
||||
if [[ ! -f "${BASE_PATH}/${BASE_FILE}" ]]; then
|
||||
builder_die "Cannot compute file size or MD5 for non-existent DMG file: ${BASE_PATH}/${BASE_FILE}"
|
||||
fi
|
||||
|
||||
FILE_EXTENSION="${BASE_FILE##*.}"
|
||||
|
||||
# stat flags to get filesize in bytes
|
||||
if [ "$BUILDER_OS" == "mac" ] && [[ $(which stat) == /usr/bin/stat ]]; then
|
||||
# shellcheck disable=SC2312
|
||||
if [[ "${BUILDER_OS}" == "mac" ]] && [[ $(command -v stat) == /usr/bin/stat ]]; then
|
||||
# /usr/bin/stat on mac is BSD
|
||||
STAT_FLAGS="-f%z"
|
||||
else
|
||||
# GNU (coreutils)
|
||||
STAT_FLAGS="-c%s"
|
||||
fi
|
||||
FILE_SIZE=$(stat ${STAT_FLAGS} "${BASE_PATH}/${BASE_FILE}")
|
||||
MD5_HASH=$(md5sum "${BASE_PATH}/${BASE_FILE}" | cut -d" " -f 1 -) # hash is the first element returned
|
||||
|
||||
if [[ -f "$DOWNLOAD_INFO_FILEPATH" ]]; then
|
||||
builder_warn "Overwriting $DOWNLOAD_INFO_FILEPATH"
|
||||
STAT_FLAGS="--print=%s"
|
||||
fi
|
||||
|
||||
echo { > "$DOWNLOAD_INFO_FILEPATH"
|
||||
echo " \"name\": \"${PRODUCT_NAME}\"," >> "$DOWNLOAD_INFO_FILEPATH"
|
||||
echo " \"version\": \"${KM_VERSION}\"," >> "$DOWNLOAD_INFO_FILEPATH"
|
||||
echo " \"date\": \"$(date "+%Y-%m-%d")\"," >> "$DOWNLOAD_INFO_FILEPATH"
|
||||
echo " \"platform\": \"${KM_PLATFORM}\"," >> "$DOWNLOAD_INFO_FILEPATH"
|
||||
echo " \"stability\": \"${KM_TIER}\"," >> "$DOWNLOAD_INFO_FILEPATH"
|
||||
echo " \"file\": \"${BASE_FILE}\"," >> "$DOWNLOAD_INFO_FILEPATH"
|
||||
echo " \"md5\": \"${MD5_HASH}\"," >> "$DOWNLOAD_INFO_FILEPATH"
|
||||
echo " \"type\": \"${FILE_EXTENSION}\"," >> "$DOWNLOAD_INFO_FILEPATH"
|
||||
echo " \"build\": \"${KM_BLD_COUNTER}\"," >> "$DOWNLOAD_INFO_FILEPATH"
|
||||
echo " \"size\": \"${FILE_SIZE}\"" >> "$DOWNLOAD_INFO_FILEPATH"
|
||||
echo } >> "$DOWNLOAD_INFO_FILEPATH"
|
||||
# Construct .download_info
|
||||
DATE=$(date +%F)
|
||||
# shellcheck disable=SC2312
|
||||
HASH=$(md5sum "${UPLOAD_DIR}/${ARTIFACT_FILENAME}" | cut -d ' ' -f 1)
|
||||
# shellcheck disable=SC2248
|
||||
SIZE=$(stat ${STAT_FLAGS} "${UPLOAD_DIR}/${ARTIFACT_FILENAME}")
|
||||
|
||||
# shellcheck disable=SC2016,SC2154
|
||||
DOWNLOAD_INFO=$(
|
||||
"${JQ}" -n \
|
||||
--arg NAME "${ARTFIACT_NAME}" \
|
||||
--arg BUILD_NUMBER "${KEYMAN_VERSION}" \
|
||||
--arg DATE "${DATE}" \
|
||||
--arg PLATFORM "${PLATFORM}" \
|
||||
--arg KEYMAN_TIER "${KEYMAN_TIER}" \
|
||||
--arg FILENAME "${ARTIFACT_FILENAME}" \
|
||||
--arg ARTIFACT_TYPE "${ARTIFACT_TYPE}" \
|
||||
--arg HASH "${HASH}" \
|
||||
--arg BUILD_COUNTER "${KEYMAN_VERSION_PATCH}" \
|
||||
--arg SIZE "${SIZE}" \
|
||||
'{
|
||||
name: $NAME, version: $BUILD_NUMBER, date: $DATE, platform: $PLATFORM,
|
||||
stability: $KEYMAN_TIER, file: $FILENAME, md5: $HASH, type: $ARTIFACT_TYPE,
|
||||
build: $BUILD_COUNTER, size: $SIZE
|
||||
}'
|
||||
)
|
||||
echo "${DOWNLOAD_INFO}" | "${JQ}" . >> "${UPLOAD_DIR}/${ARTIFACT_FILENAME}.download_info"
|
||||
}
|
||||
|
||||
# set_version sets the file version on mac/ios projects
|
||||
|
|
|
|||
|
|
@ -1,54 +0,0 @@
|
|||
# shellcheck shell=bash
|
||||
# Keyman is copyright (C) SIL Global. MIT License.
|
||||
|
||||
# shellcheck disable=SC2154
|
||||
. "${KEYMAN_ROOT}/resources/build/jq.inc.sh"
|
||||
|
||||
#
|
||||
# Write ${UPLOAD_DIR}/${ARTIFACT_FILENAME}.download_info file for the target
|
||||
# artifact
|
||||
#
|
||||
# Parameters:
|
||||
# 1: UPLOAD_DIR Directory where artifact can be found
|
||||
# 2: ARTIFACT_FILENAME Filename (without path) of artifact
|
||||
# 3: ARTIFACT_NAME Descriptive name of artifact
|
||||
# 4: ARTIFACT_TYPE File extension of artifact, without initial period (e.g. tar.gz)
|
||||
# 5: PLATFORM Target platform for artifact
|
||||
#
|
||||
write_download_info() {
|
||||
# TODO: DRY out with Linux download_info writer, others
|
||||
local UPLOAD_DIR="$1"
|
||||
local ARTIFACT_FILENAME="$2"
|
||||
local ARTFIACT_NAME="$3"
|
||||
local ARTIFACT_TYPE="$4"
|
||||
local PLATFORM="$5"
|
||||
|
||||
local DATE HASH SIZE DOWNLOAD_INFO
|
||||
|
||||
# Construct .download_info
|
||||
DATE=$(date +%F)
|
||||
# shellcheck disable=SC2312
|
||||
HASH=$(md5sum "${UPLOAD_DIR}/${ARTIFACT_FILENAME}" | cut -d ' ' -f 1)
|
||||
SIZE=$(stat --print="%s" "${UPLOAD_DIR}/${ARTIFACT_FILENAME}")
|
||||
|
||||
# shellcheck disable=SC2016
|
||||
DOWNLOAD_INFO=$(
|
||||
"${JQ}" -n \
|
||||
--arg NAME "${ARTFIACT_NAME}" \
|
||||
--arg BUILD_NUMBER "${KEYMAN_VERSION}" \
|
||||
--arg DATE "${DATE}" \
|
||||
--arg PLATFORM "${PLATFORM}" \
|
||||
--arg KEYMAN_TIER "${KEYMAN_TIER}" \
|
||||
--arg FILENAME "${ARTIFACT_FILENAME}" \
|
||||
--arg ARTIFACT_TYPE "${ARTIFACT_TYPE}" \
|
||||
--arg HASH "${HASH}" \
|
||||
--arg BUILD_COUNTER "${KEYMAN_VERSION_PATCH}" \
|
||||
--arg SIZE "${SIZE}" \
|
||||
'{
|
||||
name: $NAME, version: $BUILD_NUMBER, date: $DATE, platform: $PLATFORM,
|
||||
stability: $KEYMAN_TIER, file: $FILENAME, md5: $HASH, type: $ARTIFACT_TYPE,
|
||||
build: $BUILD_COUNTER, size: $SIZE
|
||||
}'
|
||||
)
|
||||
echo "${DOWNLOAD_INFO}" | "${JQ}" . >> "${UPLOAD_DIR}/${ARTIFACT_FILENAME}.download_info"
|
||||
}
|
||||
Loading…
Add table
Reference in a new issue