blob: a958bd3beaf505cead205de5e3c4422a376e7e85 [file] [log] [blame]
#!/bin/bash
BASEDIR="$1"
WWWDIR="$2"
BASEURL="$3"
INDEX_DEVICE="$4"
if [ -z "$BASEDIR" ] || [ -z "$WWWDIR" ] || [ -z "$BASEURL" ]; then
echo "Usage: $0 <basedir> <wwwdir> <baseurl> [device]"
exit 1
fi
function get_metadata_value() {
local METADATA_LOCAL="$1"
local KEY="$2"
echo "$METADATA_LOCAL" | grep "$KEY=" | cut -f2- -d '='
}
TRANSACTION=$(mktemp)
echo "" > "$TRANSACTION"
find "$BASEDIR" -name *.zip -or -name *.sha256 -mtime +50 -delete -print
find "$BASEDIR" -empty -type d -delete -print
if [ ! -z "$INDEX_DEVICE" ]; then
echo "DELETE FROM leaf_ota WHERE device = \"$INDEX_DEVICE\";" > "$TRANSACTION"
else
echo "DELETE FROM leaf_ota;" > "$TRANSACTION"
fi
for OTA in $(find "$BASEDIR" -name *.zip); do
echo "$OTA"
[ ! -f "$OTA".sha256 ] && sha256sum "$OTA" > "$OTA".sha256
METADATA=$(unzip -p - "$OTA" META-INF/com/android/metadata 2>/dev/null)
if [ ! -z "$METADATA" ]; then
DEVICE=$(get_metadata_value "$METADATA" "pre-device")
DATETIME=$(get_metadata_value "$METADATA" "post-timestamp")
INCREMENTAL=$(get_metadata_value "$METADATA" "post-build-incremental")
else # GSI
DEVICE=$(echo "$OTA" | cut -f5 -d '-')
DATETIME=$(date -r "$OTA" +%s)
INCREMENTAL=$(echo "$OTA" | cut -f3 -d '-')
fi
FILENAME=$(basename "$OTA")
ID=$(cat "$OTA".sha256 | cut -f1 -d ' ')
ROMTYPE="OFFICIAL"
SIZE=$(du -b "$OTA" | cut -f1)
URL=$(echo "$OTA" | sed "s|$BASEDIR|$BASEURL|g")
VERSION=$(echo "$OTA" | cut -f2 -d '-')
INCREMENTAL=$(get_metadata_value "$METADATA" "post-build-incremental")
INCREMENTAL_BASE=$(get_metadata_value "$METADATA" "pre-build-incremental")
if [ -z "$INCREMENTAL_BASE" ]; then
FLAVOR=$(echo "$OTA" | cut -f4 -d '-')
else
FLAVOR=$(echo "$OTA" | cut -f6 -d '-')
fi
UPGRADE=$(cat "$WWWDIR/content/devices/$DEVICE.yml" | grep "format_on_upgrade:" | cut -f2 -d ':' | xargs)
echo "INSERT INTO leaf_ota(device, datetime, filename, id, romtype, size, url, version, " \
"flavor, incremental, incremental_base, upgrade) VALUES (\"$DEVICE\", \"$DATETIME\", " \
"\"$FILENAME\", \"$ID\", \"$ROMTYPE\", \"$SIZE\", \"$URL\", \"$VERSION\", " \
"\"$FLAVOR\", \"$INCREMENTAL\", \"$INCREMENTAL_BASE\", \"$UPGRADE\");" >> "$TRANSACTION"
done
echo "UPDATE leaf_ota SET incremental_base = NULL WHERE incremental_base = '';" >> "$TRANSACTION"
cat "$TRANSACTION" | mariadb -u leaf -pleaf -D "leaf_ota"
rm "$TRANSACTION"