#!/bin/bash set -e test -n "$LINES" || { eval $(resize) } test -n "$LINES" || { read -r LINES COLUMNS < <(stty size) } test -n "$LINES" || { LINES=25 COLUMS=80 } type whiptail &>/dev/null && { ECHO(){ whiptail --msgbox "$1" $((LINES - 6)) $(( $COLUMNS - 6)) --title "incorrect input" } READ(){ whiptail --inputbox "$1" $((LINES - 6)) $(( $COLUMNS - 6)) --title "$2" 3>&1 1>&2 2>&3 } } || { ECHO(){ echo "$1" read -N 1 OK } READ(){ cat >&2 << EOF --------------------------------------------- $2 --------------------------------------------- $1 EOF read RESULT echo "$RESULT" } } #APP_NAME while test -z "${APP_NAME:-}" do APP_NAME="$(READ 'Please choose the name of the app: ' 'Create new Android-App step (1/)')" done #APP_PACKAGE while test -z "${APP_PACKAGE:-}" do APP_PACKAGE_DEFAULT="${APP_NAME,,}" APP_PACKAGE_DEFAULT="${APP_PACKAGE_DEFAULT//[!a-z0-9]/_}" APP_PACKAGE="$(READ "Please provide a Package.Name for the App [default=$APP_PACKAGE_DEFAULT]: " 'Create new Android-App step (2/)' )" APP_PACKAGE="${APP_PACKAGE:-$APP_PACKAGE_DEFAULT}" APP_PACKAGE="${APP_PACKAGE,,}" APP_PACKAGE="${APP_PACKAGE//[!a-z0-9\.]/}" test -d "apps/$APP_PACKAGE" && { ECHO "There is already an app with APP_PACKAGE '$APP_PACKAGE'. Choose other APP_PACKAGE name" >&2 APP_PACKAGE="" } done #APP_FOLDER while test -z "${APP_FOLDER:-}" do APP_FOLDER_DEFAULT="./apps/${APP_PACKAGE}" APP_FOLDER="$(READ "Please provide a a path where to setup the Android App Skeleton[default=$APP_FOLDER_DEFAULT]: " 'Create new Android-App step (3/)' )" APP_FOLDER="${APP_FOLDER:-$APP_FOLDER_DEFAULT}" test -d "$APP_FOLDER" && { ECHO "There is already a folder at '$APP_FOLDER'. Choose other APP_PACKAGE name" >&2 APP_FOLDER="" } done #APP_VERSION_SDK_TARGET while test -z "${APP_VERSION_SDK_TARGET:-}" do APP_VERSION_SDK_TARGET_DEFAULT="33" APP_VERSION_SDK_TARGET="$(READ "$(cat << API_LEVELS Please Choose the Target SDK Version: 35 = android 15 = 2024 34 = android 14 = 2023 33 = android 13 = 2022 32 = android 12l = 2022 31 = android 12 = 2021 30 = android 11 = 2020 20 = android 10 = 2019 (see https://apilevels.com/ for more info) please choose [default=$APP_VERSION_SDK_TARGET_DEFAULT]: API_LEVELS )" 'Create new Android-App step (4/)' )" APP_VERSION_SDK_TARGET="${APP_VERSION_SDK_TARGET:-$APP_VERSION_SDK_TARGET_DEFAULT}" test "$APP_VERSION_SDK_TARGET" -gt 0 || { ECHO "error: APP_VERSION_SDK_TARGET '$APP_VERSION_SDK_TARGET' is not valid" APP_VERSION_SDK_TARGET=''; } done #APP_VERSION_SDK_TARGET while test -z "${APP_VERSION_SDK_MIN:-}" do APP_VERSION_SDK_MIN_DEFAULT="$(( $APP_VERSION_SDK_TARGET - 3))" APP_VERSION_SDK_MIN="$(READ "$(cat << API_LEVELS Please Choose the Target SDK Version: 35 = android 15 = 2024 34 = android 14 = 2023 33 = android 13 = 2022 32 = android 12l = 2022 31 = android 12 = 2021 30 = android 11 = 2020 20 = android 10 = 2019 (see https://apilevels.com/ for more info) please choose [default=$APP_VERSION_SDK_MIN_DEFAULT]: API_LEVELS )" 'Create new Android-App step (5/)' )" APP_VERSION_SDK_MIN="${APP_VERSION_SDK_MIN:-$APP_VERSION_SDK_MIN_DEFAULT}" test "$APP_VERSION_SDK_MIN" -gt 0 || { ECHO "error: APP_VERSION_SDK_MIN '$APP_VERSION_SDK_MIN' is not valid" APP_VERSION_SDK_TARGET=''; } done APP_PERMISSIONS="$(cat << APP_PERMISSIONS_EOF APP_PERMISSIONS_EOF )" mkdir -p "$APP_FOLDER" APP_VALUES="$(tee "${APP_FOLDER}/values.sh" << VALUES APP_NAME='$APP_NAME' APP_PACKAGE='$APP_PACKAGE' APP_FOLDER='$APP_FOLDER' APP_VERSION_SDK_TARGET='$APP_VERSION_SDK_TARGET' APP_VERSION_SDK_MINTARGET='$APP_VERSION_SDK_TARGET' APP_PERMISSIONS='$APP_PERMISSIONS' VALUES )" cat << INFO Creating an skeleton for an Android app with the following info: $APP_VALUES INFO cat > "${APP_FOLDER}/AndroidManifest.xml" << ANDROIDMANIFEST $(sed 's/^/ /' <<< "$APP_PERMISSIONS") ANDROIDMANIFEST cat Dockerfile > "${APP_FOLDER}/Dockerfile" cat >> "${APP_FOLDER}/Dockerfile" << DOCKERFILEADDITION RUN echo "$YESACCEPT" | sdkmanager --install "build-tools;33.0.2" RUN echo "$YESACCEPT" | sdkmanager --install "platforms;android-33" DOCKERFILEADDITION