#!/bin/bash
set -eu

# Usage: update_prebuilts.sh BUILD_ID {all|car-apps-common|car-assist-lib|car-media-common|car-messaging-models|car-uxr-client-lib|car-telephony-common|car-ui-lib|car-app-card-lib|car-app-card-host-lib} [TARGET]

if [ -z "${1+x}" ]
then
    echo "build id is required"
    exit 1
fi

function downloadApp {
    echo "Build: " $1 " Target: " $4
    # See go/fetch_artifact for details on fetch_artifact. To install it use:
    # sudo glinux-add-repo android stable && \
    # sudo apt update && \
    # sudo apt install android-fetch-artifact

    CMD="fetch_artifact --bid $1 --target $4 --use_oauth2"

    $CMD $2 $3
}

LIB_TARGET=${2-all}
BUILD_TARGET=${3-car_apps_gradle-all}

cd $(dirname $0)

shopt -s nocasematch
case $LIB_TARGET in
    all)
        echo "Downloading all the libs"
        echo "Downloading car-apps-common"
        downloadApp $1 "car-apps-common.aar" "car-apps-common.aar" $BUILD_TARGET
        echo "Downloading car-assist-lib"
        downloadApp $1 "car-assist-lib.aar" "car-assist-lib.aar" $BUILD_TARGET
        echo "Downloading car-media-common"
        downloadApp $1 "car-media-common.aar" "car-media-common.aar" $BUILD_TARGET
        echo "Downloading car-media-extensions"
        downloadApp $1 "car-media-extensions.aar" "car-media-extensions.aar" $BUILD_TARGET
	echo "Downloading car-messaging-models"
        downloadApp $1 "car-messaging-models.aar" "car-messaging-models.aar" $BUILD_TARGET
        echo "Downloading car-telephony-common"
        downloadApp $1 "car-telephony-common.aar" "car-telephony-common.aar" $BUILD_TARGET
        echo "Downloading car-ui-lib"
        downloadApp $1 "car-ui-lib.aar" "car-ui-lib.aar" "car_apps-user"
        echo "Downloading car-ui-lib-oem-apis"
        downloadApp $1 "car-ui-lib-oem-apis-source.jar" "car-ui-lib-oem-apis.jar" "car_apps-user"
        echo "Downloading car-uxr-client-lib"
        downloadApp $1 "car-uxr-client-lib.aar" "car-uxr-client-lib.aar" $BUILD_TARGET
        echo "Downloading car-ui-lib-testing-support.aar"
        downloadApp $1 "car-ui-lib-testing-support.aar" "car-ui-lib-testing-support.aar" "car_apps-user"
        echo "Downloading car-ui-lib-no-overlayable.aar"
        downloadApp $1 "car-ui-lib-no-overlayable.aar" "car-ui-lib-no-overlayable.aar" "car_apps-user"
        echo "Downloading oem-token-lib"
        downloadApp $1 "oem-token-lib.aar" "oem-token-lib.aar" "car_apps-user"
        echo "Downloading oem-token-sharedlib"
        downloadApp $1 "token-sharedlibrary.aar" "token-sharedlibrary.aar" "car_apps-user"
        echo "Downloading token-sharedlibrary-res"
        downloadApp $1 "token-sharedlibrary-res.zip" "token-sharedlibrary-res.zip" "car_apps-user"
        echo "Downloading car-broadcastradio-support"
        downloadApp $1 "car-broadcastradio-support.aar" "car-broadcastradio-support.aar" $BUILD_TARGET
        echo "Downloading car-app-card-lib"
        downloadApp $1 "car-app-card-lib.aar" "car-app-card-lib.aar" $BUILD_TARGET
        echo "Downloading car-app-card-host-lib"
        downloadApp $1 "car-app-card-host-lib.aar" "car-app-card-host-lib.aar" $BUILD_TARGET
        ;;
    car-apps-common)
        echo "Downloading car-apps-common"
        downloadApp $1 "car-apps-common.aar" "car-apps-common.aar" $BUILD_TARGET
        ;;
    car-assist-lib)
        echo "Downloading car-assist-lib"
        downloadApp $1 "car-assist-lib.aar" "car-assist-lib.aar" $BUILD_TARGET
        ;;
    car-media-common)
        echo "Downloading car-media-common"
        downloadApp $1 "car-media-common.aar" "car-media-common.aar" $BUILD_TARGET
        echo "Downloading car-media-extensions"
        downloadApp $1 "car-media-extensions.aar" "car-media-extensions.aar" $BUILD_TARGET
        ;;
    car-messaging-models)
        echo "Downloading car-messaging-models"
        downloadApp $1 "car-messaging-models.aar" "car-messaging-models.aar" $BUILD_TARGET
        ;;
    car-uxr-client-lib)
        echo "Downloading car-uxr-client-lib"
        downloadApp $1 "car-uxr-client-lib.aar" "car-uxr-client-lib.aar" $BUILD_TARGET
        ;;
    car-telephony-common)
        echo "Downloading car-telephony-common"
        downloadApp $1 "car-telephony-common.aar" "car-telephony-common.aar" $BUILD_TARGET
        ;;
    car-ui-lib)
        echo "Downloading car-ui-lib"
        downloadApp $1 "car-ui-lib.aar" "car-ui-lib.aar" "car_apps-user"
        echo "Downloading car-ui-lib-oem-apis"
        # TODO(b/258809109): car-ui-lib-oem-apis-jar.jar doesn't have a gradle target yet.
        downloadApp $1 "car-ui-lib-oem-apis-source.jar" "car-ui-lib-oem-apis.jar" "car_apps-user"
        # TODO(b/258809109): car-ui-lib-testing-support doesn't have a gradle target yet.
        echo "Downloading car-ui-lib-testing-support.aar"
        downloadApp $1 "car-ui-lib-testing-support.aar" "car-ui-lib-testing-support.aar" "car_apps-user"
        # TODO(b/258809109): car-ui-lib-no-overlayable doesn't have a gradle target yet.
        echo "Downloading car-ui-lib-no-overlayable.aar"
        downloadApp $1 "car-ui-lib-no-overlayable.aar" "car-ui-lib-no-overlayable.aar" "car_apps-user"
        ;;
    oem-token-lib)
        echo "Downloading oem-token-lib"
        downloadApp $1 "oem-token-lib.aar" "oem-token-lib.aar" "car_apps-user"
        echo "Downloading oem-token-sharedlib"
        downloadApp $1 "token-sharedlibrary.aar" "token-sharedlibrary.aar" "car_apps-user"
        echo "Downloading token-sharedlibrary-res"
        downloadApp $1 "token-sharedlibrary-res.zip" "token-sharedlibrary-res.zip" "car_apps-user"
        ;;
    car-broadcastradio-support)
        echo "Downloading car-broadcastradio-support"
        downloadApp $1 "car-broadcastradio-support.aar" "car-broadcastradio-support.aar" $BUILD_TARGET
        ;;
    car-app-card-lib)
        echo "Downloading car-app-card-lib"
        downloadApp $1 "car-app-card-lib.aar" "car-app-card-lib.aar" $BUILD_TARGET
        ;;
    car-app-card-host-lib)
        echo "Downloading car-app-card-host-lib"
        downloadApp $1 "car-app-card-host-lib.aar" "car-app-card-host-lib.aar" $BUILD_TARGET
        ;;
    *)
        echo "Invalid application option {all|car-apps-common|car-assist-lib|car-media-common|car-messaging-models|car-uxr-client-lib|car-telephony-common|car-ui-lib|oem-token-lib|car-app-card-lib|car-app-card-host-lib}"
        ;;
esac
shopt -u nocasematch

echo "Done. Don't forget to test and commit the new artifacts."
