#!/bin/bash pwd id set -e #APP_NAME while test -z "${APP_NAME:-}" do read -p "Please provide a Name for the Android App: " APP_NAME done #APP_PACKAGE while test -z "${APP_PACKAGE:-}" do APP_PACKAGE_DEFAULT="${APP_NAME,,}" APP_PACKAGE_DEFAULT="${APP_PACKAGE_DEFAULT//[!a-z0-9]/_}" read -p "Please provide a Package.Name for the App [default=$APP_PACKAGE_DEFAULT]: " APP_PACKAGE 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}" read -p "Please provide a a path where to setup the Android App Skeleton[default=$APP_FOLDER_DEFAULT]: " APP_FOLDER 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 cat << API_LEVELS read -p "please choose the APP_VERSION_SDK_TARGET apilevel:' 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) API_LEVELS APP_VERSION_SDK_TARGET_DEFAULT="33" read -p "please choose [default=$APP_VERSION_SDK_TARGET_DEFAULT]: " APP_VERSION_SDK_TARGET 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_MIN while test -z "${APP_VERSION_SDK_MIN:-}" do cat << API_LEVELS read -p "please choose the APP_VERSION_SDK_MIN apilevel:' 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) API_LEVELS APP_VERSION_SDK_MIN_DEFAULT="$(( $APP_VERSION_SDK_TARGET - 2))" test "$APP_VERSION_SDK_MIN_DEFAULT" -lt 1 && APP_VERSION_SDK_MIN_DEFAULT=1 read -p "please choose [default=$APP_VERSION_SDK_MIN_DEFAULT]: " APP_VERSION_SDK_MIN 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_MIN=''; } 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