From 8a55c57d414c55c0fe951ef9bd7671e27510406d Mon Sep 17 00:00:00 2001 From: Alexander Mahr Date: Sun, 8 Dec 2024 07:28:18 +0100 Subject: [PATCH] whiptail the new-app.sh --- new-app.sh | 202 +++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 202 insertions(+) create mode 100755 new-app.sh diff --git a/new-app.sh b/new-app.sh new file mode 100755 index 0000000..3ef6981 --- /dev/null +++ b/new-app.sh @@ -0,0 +1,202 @@ +#!/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 +