function jaaENV { if [ "$1" = "--help" ]; then echo "Utility to combine nvm/sdk/… in one script/config file '.jaaENV'" echo " ↘ instead of 'nvm use 16 & sdk use …'" echo "" echo "Usage:" echo " jaaENV" echo " jaaENV [--help|--ls]" echo " jaaENV --save …to_save (example: jaaENV --save nodejs php)" echo "" echo "Description:" echo " - Without arguments, loads info from '.jaaENV'" echo " - 'ls' shows supported options to auto-load" echo " - 'save' creates a config file '.jaaENV'" echo "" echo "Usage '.jaaENV' files: " echo " typical: '\nphp=5.6\nnodejs=16.13.0'" echo " link: '. ../.jaaENV' … use settings from parent folder" echo " Options:" echo " 'android_home': Exports 'ANDROID_HOME' (uses 'ANDROID_HOME_BAK') instead of 'ANDROID_SDK_ROOT'. Value can be anything (use '1')." echo " 'jdk': Exports 'JAVA_HOME' based on the wanted version (currently 11/1.8)" echo " 'nodejs'|'php': NodeJS/PHP versions" echo " 'gradle': Cordova uses folder-scoped → so unnecesarly" echo "" echo "Install: " echo " gradle ⇒ https://sdkman.io/" echo " node ⇒ https://github.com/nvm-sh/nvm" echo " php ⇒ \`update-alternatives\` + https://deb.sury.org/" echo " java ⇒ \`update-alternatives\`" echo "" echo "Tips:" echo " sudo update-alternatives --set php /usr/bin/php\$php" return 0 fi if [ "$1" == "--save" ]; then shift rm -vi .jaaENV while [ $# -gt 0 ]; do case "$1" in nodejs|node) echo "nodejs=$(node --version | cut -c2-)" >> .jaaENV ;; gradle) echo "gradle=$(gradle --version | awk '/Gradle/ {print $2}')" >> .jaaENV ;; php) echo "php=$(php --version | awk '/^PHP/ {print $2}')" >> .jaaENV ;; java) local java_version=$(java -version 2>&1 | awk -F '"' '/version/ {print $2}') if [[ "$java_version" == 1.8* ]]; then java_version=8 else java_version=$(echo "$java_version" | cut -d'.' -f1) fi echo "java=$java_version" >> .jaaENV ;; *) echo "Unknown '$1' – skipped" ;; esac shift done return 0 fi if [ "$1" == "--ls" ]; then echo ":: nvm ls --no-alias ::" nvm ls --no-alias echo ":: update-alternatives --list php ::" update-alternatives --list php echo ":: update-alternatives --list java ::" update-alternatives --list java echo ":: sdk ls gradle | grep -E '\*|>' :: " sdk ls gradle | grep -E '\*|>' return 0 fi if [ -f "compose.yaml" ]; then jdk=$(grep -Po 'VERSION_JAVA=\K.*' compose.yaml) nodejs=$(grep -Po 'VERSION_NODEJS=\K.*' compose.yaml) elif [ -f ".jaaENV" ]; then . ./.jaaENV else echo 'No env file `compose.yaml` or `.jaaENV`' return 1 fi local chP="\[\033[0;35m\]" #purple local chW="\[\033[00m\]" #white export PS1_jaaENV="${chP}⋮${chW}" if [ ! -z ${ANDROID_SDK_ROOT_BAK+x} ]; then export ANDROID_SDK_ROOT=$ANDROID_SDK_ROOT_BAK echo \$ANDROID_SDK_ROOT=$ANDROID_SDK_ROOT_BAK unset ANDROID_SDK_ROOT_BAK fi if [ ! -z ${unset_android_sdk+x} ]; then export ANDROID_SDK_ROOT_BAK=$ANDROID_SDK_ROOT unset ANDROID_SDK_ROOT fi if [ ! -z ${java+x} ]; then [[ "$java" == "8" ]] && java=1.8 local java_local=$(java -version 2>&1 | awk -F '"' '/version/ {print $2}') if [[ "$java_local" != "$java"* ]]; then [[ "$java" == "1.8" ]] && java=8 echo "Switching Java version: $java ← $java_local" local java_path="/usr/lib/jvm/java-$java-openjdk-amd64/" [[ "$java" == "8" ]] && java_path+="jre/" sudo update-alternatives --set java "${java_path}bin/java" local javac=$(update-alternatives --list javac | grep java-$java) [ -n "$javac" ] && sudo update-alternatives --set javac "$javac" sudo -k fi export JAVA_HOME=$(readlink -f $(which java) | cut -d '/' -f1-5)/ echo "\$JAVA_HOME=$JAVA_HOME" fi if [ ! -z ${android_home+x} ]; then export ANDROID_HOME=$ANDROID_HOME_BAK echo "\$ANDROID_HOME=$ANDROID_HOME" else unset ANDROID_HOME echo "\$ANDROID_SDK_ROOT=$ANDROID_SDK_ROOT" fi if [ ! -z ${android_home_is_sdk+x} ]; then export ANDROID_HOME=$ANDROID_SDK_ROOT echo "\$ANDROID_HOME=$ANDROID_HOME" fi if [ ! -z ${JAVA_HOME_BAK+x} ]; then export JAVA_HOME=$JAVA_HOME_BAK; unset JAVA_HOME_BAK; fi if [ ! -z ${jdk+x} ]; then if (( $(echo "$jdk > 9" | bc -l) )); then export JAVA_HOME_BAK=$JAVA_HOME export JAVA_HOME="/snap/android-studio/current/android-studio/jre" fi echo "\$JAVA_HOME=$JAVA_HOME" fi if [ ! -z ${nodejs+x} ]; then nvm use $nodejs; fi if [ ! -z ${gradle+x} ]; then sdk use gradle $gradle | tr -d '\n'; echo ; fi if [ ! -z ${php+x} ]; then local php_local=$(php --version | awk '/^PHP/ {print $2}') if [[ "$php_local" == "$php"* ]]; then echo "PHP version: $php" else echo "Switching PHP version: $php ← $php_local" sudo update-alternatives --set php "/usr/bin/php$php" sudo -k fi fi # Cleanup variables unset android_home unset_android_sdk nodejs gradle php java }