#!/bin/sh case "$1" in -h|--help|help) echo "sh migrate.sh [-f] [-a] [in-file] [out-file]"; exit 0;; esac; N=" "; case "$1" in -i|--install|install) INSTALL=1; shift;; *) echo "custom.pif.json migration script \ $N by osm0sis @ xda-developers $N";; esac; item() { echo "- $@"; } die() { [ "$INSTALL" ] || echo "$N$N! $@"; exit 1; } grep_get_json() { cat "$FILE" | tr -d '\r\n' | grep -m1 -owE "$1"'"[^,}]+"' | cut -d\" -f3; } grep_check_json() { grep -q "$1" "$FILE" && [ "$(grep_get_json $1)" ]; } case "$1" in -f|--force|force) FORCE=1; shift;; esac; case "$1" in -a|--advanced|advanced) ADVANCED=1; shift;; esac; if [ -f "$1" ]; then FILE="$1"; DIR="$1"; else case "$0" in *.sh) DIR="$0";; *) DIR="$(lsof -p $$ 2>/dev/null | grep -o '/.*migrate.sh$')";; esac; fi; DIR=$(dirname "$(readlink -f "$DIR")"); [ -z "$FILE" ] && FILE="$DIR/custom.pif.json"; OUT="$2"; [ -z "$OUT" ] && OUT="$DIR/custom.pif.json"; [ -f "$FILE" ] || die "No json file found"; grep_check_json api_level && [ ! "$FORCE" ] && die "No migration required"; [ "$INSTALL" ] || item "Parsing fields ..."; FPFIELDS="BRAND PRODUCT DEVICE RELEASE ID INCREMENTAL TYPE TAGS"; ALLFIELDS="MANUFACTURER MODEL FINGERPRINT $FPFIELDS SECURITY_PATCH DEVICE_INITIAL_SDK_INT"; for FIELD in $ALLFIELDS; do eval $FIELD=\"$(grep_get_json $FIELD)\"; done; if [ -n "$ID" ] && ! grep_check_json build.id; then item 'Simple entry ID found, changing to ID field and "*.build.id" property ...'; fi; if [ -z "$ID" ] && grep_check_json BUILD_ID; then item 'Deprecated entry BUILD_ID found, changing to ID field and "*.build.id" property ...'; ID="$(grep_get_json BUILD_ID)"; fi; if [ -n "$SECURITY_PATCH" ] && ! grep_check_json security_patch; then item 'Simple entry SECURITY_PATCH found, changing to SECURITY_PATCH field and "*.security_patch" property ...'; fi; if grep_check_json VNDK_VERSION; then item 'Deprecated entry VNDK_VERSION found, changing to "*.vndk.version" property ...'; VNDK_VERSION="$(grep_get_json VNDK_VERSION)"; fi; if [ -n "$DEVICE_INITIAL_SDK_INT" ] && ! grep_check_json api_level; then item 'Simple entry DEVICE_INITIAL_SDK_INT found, changing to DEVICE_INITIAL_SDK_INT field and "*api_level" property ...'; fi; if [ -z "$DEVICE_INITIAL_SDK_INT" ] && grep_check_json FIRST_API_LEVEL; then item 'Deprecated entry FIRST_API_LEVEL found, changing to DEVICE_INITIAL_SDK_INT field and "*api_level" property ...'; DEVICE_INITIAL_SDK_INT="$(grep_get_json FIRST_API_LEVEL)"; fi; if [ -z "$RELEASE" -o -z "$INCREMENTAL" -o -z "$TYPE" -o -z "$TAGS" ]; then item "Missing default fields found, deriving from FINGERPRINT ..."; IFS='/:' read F1 F2 F3 F4 F5 F6 F7 F8 < "$OUT"; [ "$INSTALL" ] || cat "$OUT";