From c5c370915fa248c4bdc09d2d8bf2c4dd9ad6d499 Mon Sep 17 00:00:00 2001
From: Benoit Lavenier <benoit.lavenier@e-is.pro>
Date: Tue, 11 Aug 2020 15:27:57 +0200
Subject: [PATCH] [fix] Refactor scripts env*.sh : now use POSIX format, to be
 able to source this files

---
 scripts/env-android.sh | 60 +++++++++++++++----------
 scripts/env-global.sh  | 99 ++++++++++++++++++++++--------------------
 2 files changed, 89 insertions(+), 70 deletions(-)

diff --git a/scripts/env-android.sh b/scripts/env-android.sh
index 32d7d52dd..b333ce926 100755
--- a/scripts/env-android.sh
+++ b/scripts/env-android.sh
@@ -1,19 +1,17 @@
-#!/bin/bash
+#!/bin/sh
 
 # Get to the root project
-if [[ "_" == "_${PROJECT_DIR}" ]]; then
+if test -z "${PROJECT_DIR}"; then
   SCRIPT_DIR=$(dirname $0)
   PROJECT_DIR=$(cd "${SCRIPT_DIR}/.." && pwd)
   export PROJECT_DIR
 fi;
 
 # Preparing environment
-. ${PROJECT_DIR}/scripts/env-global.sh
-[[ $? -ne 0 ]] && exit 1
+. "${PROJECT_DIR}/scripts/env-global.sh"
 
-if [[ "_" == "_${CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL}" ]]; then
-  echo "Missing Gradle distribution URL - please export env variable 'CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL'"
-  exit 1
+if test -z "${CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL}"; then
+  echo "ERROR: Missing Gradle distribution URL - please export env variable 'CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL'"
 fi
 
 echo "Preparing Android environment:"
@@ -25,48 +23,62 @@ echo " - project dir: ${PROJECT_DIR}"
 
 # Make sure javac exists
 JAVAC_PATH=$(which javac)
-if [[ "_" == "_${JAVAC_PATH}" ]]; then
+if test -z "${JAVAC_PATH}"; then
   echo "ERROR: 'javac' executable not found in PATH. Make sure you have installed a complete Java JDK, and not only a JRE."
-  exit 1
+  #exit 1
 fi
 
 # Prepare Android SDK tools
-if [[ ! -d "${ANDROID_SDK_TOOLS_ROOT}" ]]; then
+if ! test -d "${ANDROID_SDK_TOOLS_ROOT}"; then
   cd "${PROJECT_DIR}/scripts"
   ./install-android-sdk-tools.sh
-  [[ $? -ne 0 ]] && exit 1
+  if test $? -ne 0; then
+    echo "ERROR: Unable to install Android SDK Tools"
+  fi
 fi
 
 # Install Gradle
-if [[ "_" == "_$(which gradle)" && ! -d "${GRADLE_HOME}" ]]; then
+if test -z "$(which gradle)" && ! test -d "${GRADLE_HOME}"; then
   cd "${PROJECT_DIR}/scripts"
   echo "Installing gradle...  ${GRADLE_HOME}"
   test -e "gradle-${GRADLE_VERSION}-all.zip" || wget -kL ${CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL}
   GRADLE_PARENT=$(dirname $GRADLE_HOME)
   test -e "${GRADLE_PARENT}" || mkdir -p ${GRADLE_PARENT}
   test -e "${GRADLE_PARENT}/gradle-${GRADLE_VERSION}" || unzip -qq gradle-${GRADLE_VERSION}-all.zip -d "${GRADLE_PARENT}"
-  [[ $? -ne 0 ]] && exit 1
-  test -e "${GRADLE_HOME}" || mv "${GRADLE_PARENT}/gradle-${GRADLE_VERSION}" "${GRADLE_HOME}"
-  [[ $? -ne 0 ]] && exit 1
-  test -e "${GRADLE_PARENT}/gradle-${GRADLE_VERSION}" || rm "${GRADLE_PARENT}/gradle-${GRADLE_VERSION}"
+  if test $? -eq 0; then
+    test -e "${GRADLE_HOME}" || mv "${GRADLE_PARENT}/gradle-${GRADLE_VERSION}" "${GRADLE_HOME}"
+    if test $? -eq 0; then
+      test -e "${GRADLE_PARENT}/gradle-${GRADLE_VERSION}" || rm "${GRADLE_PARENT}/gradle-${GRADLE_VERSION}"
+    fi
+  fi
+  if test $? -ne 0; then
+    echo "ERROR: Unable to install Gradle"
+  fi
 fi
 
 
 # Prepare Android platform
-if [[ ! -d "${PROJECT_DIR}/platforms/android" ]]; then
+if ! test -d "${PROJECT_DIR}/platforms/android"; then
   echo "Adding Cordova Android platform..."
   cd "${PROJECT_DIR}"
   ionic cordova prepare android --color --verbose
-  [[ $? -ne 0 ]] && exit 1
+  if test $? -ne 0; then
+    echo "ERROR: Cannot install Android platform (using cordova)"
+  fi
 fi
 
 # Copy local files
-if [[ -d "${PROJECT_DIR}/.local/android" ]]; then
-  echo "Copying files from directory '${PROJECT_DIR}/.local/android' into '${PROJECT_DIR}/platforms/android'..."
-  cp -rf ${PROJECT_DIR}/.local/android/* ${PROJECT_DIR}/platforms/android
-  [[ $? -ne 0 ]] && exit 1
+ANDROID_OVERWRITE_DIR=${PROJECT_DIR}/.local/android
+if test -d "${ANDROID_OVERWRITE_DIR}"; then
+  echo "Copying files from directory '${ANDROID_OVERWRITE_DIR}' into '${PROJECT_DIR}/platforms/android'..."
+  cp -rf ${ANDROID_OVERWRITE_DIR}/* ${PROJECT_DIR}/platforms/android
+  if test $? -ne 0; then
+    echo "ERROR: Cannot copy local files '${ANDROID_OVERWRITE_DIR}/*'"
+  fi
 else
-  echo "No directory '${PROJECT_DIR}/.local/android' found. Please create it, with a file 'release-signing.properties' for release signing"
+  echo "No directory '${ANDROID_OVERWRITE_DIR}' not found. Please create it, with a file 'release-signing.properties' for release signing"
 fi
 
- echo "Environment is ready!"
+export PATH=${GRADLE_HOME}/bin:${PATH}
+
+echo "Android environment is ready!"
diff --git a/scripts/env-global.sh b/scripts/env-global.sh
index 083de511c..582fd41ad 100755
--- a/scripts/env-global.sh
+++ b/scripts/env-global.sh
@@ -1,26 +1,27 @@
-#!/bin/bash
+#!/bin/sh
 
 # Get to the root project
-if [[ "_" == "_${PROJECT_DIR}" ]]; then
-  SCRIPT_DIR=$(dirname $0)
-  PROJECT_DIR=$(cd ${SCRIPT_DIR}/.. && pwd)
-  export PROJECT_DIR
-fi;
+SCRIPT_DIR=$(dirname "$(readlink "$BASH_SOURCE" || echo "$BASH_SOURCE")")
+PROJECT_DIR=$(cd "${SCRIPT_DIR}/.." && pwd -P)
+export PROJECT_DIR
+
+echo "Project dir: $PROJECT_DIR"
+
 
-if [[ ! -f "${PROJECT_DIR}/package.json" ]]; then
-  echo "Invalid project dir: file 'package.json' not found in ${PROJECT_DIR}"
-  echo "-> Make sure to run the script inside his directory, or export env variable 'PROJECT_DIR'"
-  exit 1
+if ! test -f "${PROJECT_DIR}/package.json"; then
+  echo "ERROR: Invalid project dir: file 'package.json' not found in ${PROJECT_DIR}"
+  echo "       -> Make sure to run the script inside his directory, or export env variable 'PROJECT_DIR'"
+  #exit 1
 fi;
 
-echo "Preparing project environment.."
+echo "Preparing project environment..."
 
 PROJECT_NAME="cesium"
 REPO="duniter/cesium"
 REPO_API_URL="https://api.github.com/repos/${REPO}"
 REPO_PUBLIC_URL="https://github.com/${REPO}"
 
-NODEJS_VERSION=10
+NODEJS_VERSION=12
 
 ANDROID_NDK_VERSION=r19c
 ANDROID_SDK_VERSION=r29.0.2
@@ -46,43 +47,40 @@ GRADLE_HOME=${HOME}/.gradle/${GRADLE_VERSION}
 CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL=https://services.gradle.org/distributions/gradle-${GRADLE_VERSION}-all.zip
 
 # Override with a local file, if any
-if [[ -f "${PROJECT_DIR}/.local/env.sh" ]]; then
+if test -f "${PROJECT_DIR}/.local/env.sh"; then
   echo "Loading environment variables from: '.local/env.sh'"
-  source ${PROJECT_DIR}/.local/env.sh
-  [[ $? -ne 0 ]] && exit 1
+  . ${PROJECT_DIR}/.local/env.sh
 else
   echo "No file '${PROJECT_DIR}/.local/env.sh' found. Will use defaults"
 fi
 
 # Checking Java installed
-if [[ "_" == "_${JAVA_HOME}" ]]; then
+if test -z "${JAVA_HOME}"; then
   JAVA_CMD=`which java`
-  if [[ "_" == "_${JAVA_CMD}" ]]; then
-    echo "No Java installed. Please install java, or set env variable JAVA_HOME "
-    exit 1
+  if test -z "${JAVA_CMD}"; then
+    echo "ERROR: No Java installed. Please install java, or set env variable JAVA_HOME "
+    #exit 1
   fi
 
   # Check the Java version
-  JAVA_VERSION=`java -version 2>&1 | egrep "(java|openjdk) version" | awk '{print $3}' | tr -d \"`
-  if [[ $? -ne 0 ]]; then
+  JAVA_VERSION=$(java -version 2>&1 | egrep "(java|openjdk) version" | awk '{print $3}' | tr -d \")
+  if test $? -ne 0 || test -z "${JAVA_VERSION}"; then
     echo "No Java JRE 1.8 found in machine. This is required for Android artifacts."
-    exit 1
-  fi
-  JAVA_MAJOR_VERSION=`echo ${JAVA_VERSION} | awk '{split($0, array, ".")} END{print array[1]}'`
-  JAVA_MINOR_VERSION=`echo ${JAVA_VERSION} | awk '{split($0, array, ".")} END{print array[2]}'`
-  if [[ ${JAVA_MAJOR_VERSION} -ne 1 ]] || [[ ${JAVA_MINOR_VERSION} -ne 8 ]]; then
-    echo "Require a Java JRE in version 1.8, but found ${JAVA_VERSION}. You can override your default JAVA_HOME in '.local/env.sh'."
-    exit 1
+  else
+    JAVA_MAJOR_VERSION=$(echo ${JAVA_VERSION} | awk '{split($0, array, ".")} END{print array[1]}')
+    JAVA_MINOR_VERSION=$(echo ${JAVA_VERSION} | awk '{split($0, array, ".")} END{print array[2]}')
+    if ! test "${JAVA_MAJOR_VERSION}" == "1" || ! test "${JAVA_MINOR_VERSION}" == "8"; then
+      echo "ERROR: Require a Java JRE in version 1.8, but found ${JAVA_VERSION}. You can override your default JAVA_HOME in '.local/env.sh'."
+    fi
   fi
 fi
 
 # Check Android SDK root path
-if [[ "_" == "_${ANDROID_SDK_ROOT}" || ! -d "${ANDROID_SDK_ROOT}" ]]; then
-  if [[ -d "${ANDROID_ALTERNATIVE_SDK_ROOT}" ]]; then
+if test -z "${ANDROID_SDK_ROOT}" || ! test -d "${ANDROID_SDK_ROOT}"; then
+  if test -d "${ANDROID_ALTERNATIVE_SDK_ROOT}"; then
     export ANDROID_SDK_ROOT="${ANDROID_ALTERNATIVE_SDK_ROOT}"
   else
-    echo "Please set env variable ANDROID_SDK_ROOT to an existing directory"
-    exit 1
+    echo "ERROR: Please set env variable ANDROID_SDK_ROOT to an existing directory"
   fi
 fi
 
@@ -100,22 +98,20 @@ export PATH \
 
 # Node JS
 export NVM_DIR="$HOME/.nvm"
-if [[ -d "${NVM_DIR}" ]]; then
+if test -d "${NVM_DIR}"; then
 
     # Load NVM
-    . ${NVM_DIR}/nvm.sh
+    . "${NVM_DIR}/nvm.sh"
 
     # Switch to expected version
     nvm use ${NODEJS_VERSION}
 
     # Or install it
-    if [[ $? -ne 0 ]]; then
+    if test $? -ne 0; then
         nvm install ${NODEJS_VERSION}
-        [[ $? -ne 0 ]] && exit 1
     fi
 else
     echo "nvm (Node version manager) not found (directory ${NVM_DIR} not found). Please install, and retry"
-    exit -1
 fi
 
 # Install global dependencies
@@ -125,29 +121,40 @@ CORDOVA_PATH=`which cordova`
 CORDOVA_RES_PATH=`which cordova-res`
 NATIVE_RUN_PATH=`which native-run`
 WEB_EXT_PATH=`which web-ext`
-if [[ "_" == "_${YARN_PATH}" || "_" == "_${IONIC_PATH}" || "_" == "_${CORDOVA_PATH}" || "_" == "_${CORDOVA_RES_PATH}" || "_" == "_${NATIVE_RUN_PATH}" || "_" == "_${WEB_EXT_PATH}" ]]; then
+if test -z "${YARN_PATH}" || test -z "${IONIC_PATH}" || test -z "${CORDOVA_PATH}" || test -z "${CORDOVA_RES_PATH}" || test -z "${NATIVE_RUN_PATH}" || test -z "${WEB_EXT_PATH}"; then
   echo "Installing global dependencies..."
   npm install -g yarn cordova cordova-res @ionic/cli web-ext native-run
-   [[ $? -ne 0 ]] && exit 1
+  if ! test $? == 0; then
+    echo "ERROR: Unable to install global dependencies"
+    #exit 1
+  fi
 
   # Make sure Ionic use yarn
   ionic config set -g yarn true
 fi
 
 # Install project dependencies
-if [[ ! -d "${PROJECT_DIR}/node_modules" ]]; then
+if ! test -d "${PROJECT_DIR}/node_modules"; then
     echo "Installing project dependencies..."
-    cd ${PROJECT_DIR}
+    cd "${PROJECT_DIR}"
     yarn install
 fi
 
 # Install project submodules
-if [[ ! -d "${PROJECT_DIR}/platforms/android" || ! -d "${PROJECT_DIR}/dist/desktop" ]]; then
+if ! test -d "${PROJECT_DIR}/platforms/android" || ! test -d "${PROJECT_DIR}/dist/desktop"; then
   echo "Installing project submodules..."
-  cd ${PROJECT_DIR}
+  cd "${PROJECT_DIR}"
   git submodule init && git submodule sync && git submodule update --remote --merge
-  if [[ $? -ne 0 ]]; then
-    echo "Unable to sync git submodule. Will not be able to build android and desktop artifacts!"
-    exit 1
+  if ! test $? == 0; then
+    echo "ERROR: Unable to sync git submodule. Will not be able to build android and desktop artifacts!"
+    #exit 1
   fi
 fi
+
+
+export PROJECT_DIR PROJECT_NAME REPO REPO_API_URL REPO_PUBLIC_URL NODEJS_VERSION \
+  ANDROID_NDK_VERSION ANDROID_SDK_VERSION ANDROID_SDK_TOOLS_VERSION ANDROID_SDK_ROOT ANDROID_ALTERNATIVE_SDK_ROOT \
+  ANDROID_SDK_TOOLS_ROOT ANDROID_OUTPUT_APK ANDROID_OUTPUT_APK_DEBUG ANDROID_OUTPUT_APK_RELEASE DIST_WEB \
+  DIST_ANDROID WEB_EXT_ID
+
+echo "Project environment is ready!"
-- 
GitLab