Newer
Older
Benoit Lavenier
committed
#!/bin/sh
# Get to the root project
Benoit Lavenier
committed
SCRIPT_DIR=$(dirname "$(readlink "$BASH_SOURCE" || echo "$BASH_SOURCE")")
PROJECT_DIR=$(cd "${SCRIPT_DIR}/.." && pwd -P)
export PROJECT_DIR
echo "Preparing project environment..."
echo " - using Project dir: $PROJECT_DIR"
Benoit Lavenier
committed
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
PROJECT_NAME="cesium"
REPO="duniter/cesium"
REPO_API_URL="https://api.github.com/repos/${REPO}"
REPO_PUBLIC_URL="https://github.com/${REPO}"
Benoit Lavenier
committed
NODEJS_VERSION=12
ANDROID_NDK_VERSION=r19c
ANDROID_SDK_TOOLS_VERSION=4333796
ANDROID_SDK_ROOT=/usr/lib/android-sdk
ANDROID_ALTERNATIVE_SDK_ROOT="${HOME}/Android/Sdk"
ANDROID_SDK_TOOLS_ROOT=${ANDROID_SDK_ROOT}/build-tools
Benoit Lavenier
committed
ANDROID_OUTPUT_APK=${PROJECT_DIR}/platforms/android/app/build/outputs/apk
ANDROID_OUTPUT_APK_DEBUG=${ANDROID_OUTPUT_APK}/debug
ANDROID_OUTPUT_APK_RELEASE=${ANDROID_OUTPUT_APK}/release
DIST_WEB=${PROJECT_DIR}/dist/web/build
DIST_ANDROID=${PROJECT_DIR}/dist/android
# Addons Mozilla Web extension ID
WEB_EXT_ID="{6f9922f7-a054-4609-94ce-d269993246a5}"
# /!\ WARN can be define in your <project>/.local/env.sh file
#JAVA_HOME=
Benoit Lavenier
committed
GRADLE_VERSION=6.5.1
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
Benoit Lavenier
committed
if test -f "${PROJECT_DIR}/.local/env.sh"; then
echo "Loading environment variables from: '.local/env.sh'"
Benoit Lavenier
committed
. ${PROJECT_DIR}/.local/env.sh
else
echo "No file '${PROJECT_DIR}/.local/env.sh' found. Will use defaults"
fi
# Checking Java installed
Benoit Lavenier
committed
if test -z "${JAVA_HOME}"; then
Benoit Lavenier
committed
if test -z "${JAVA_CMD}"; then
echo "ERROR: No Java installed. Please install java, or set env variable JAVA_HOME "
#exit 1
Benoit Lavenier
committed
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."
Benoit Lavenier
committed
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
# Check Android SDK root path
Benoit Lavenier
committed
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}"
Benoit Lavenier
committed
echo "ERROR: Please set env variable ANDROID_SDK_ROOT to an existing directory"
# Add Java, Android SDK tools to path
PATH=${ANDROID_SDK_TOOLS_ROOT}/bin:${GRADLE_HOME}/bin:${JAVA_HOME}/bin$:$PATH
# Export useful variables
export PATH \
PROJECT_DIR \
JAVA_HOME \
ANDROID_SDK_ROOT \
ANDROID_SDK_TOOLS_ROOT \
CORDOVA_ANDROID_GRADLE_DISTRIBUTION_URL
# Node JS
export NVM_DIR="$HOME/.nvm"
Benoit Lavenier
committed
if test -d "${NVM_DIR}"; then
Benoit Lavenier
committed
. "${NVM_DIR}/nvm.sh"
# Switch to expected version
nvm use ${NODEJS_VERSION}
# Or install it
Benoit Lavenier
committed
if test $? -ne 0; then
nvm install ${NODEJS_VERSION}
fi
else
echo "nvm (Node version manager) not found (directory ${NVM_DIR} not found). Please install, and retry"
fi
# Install global dependencies
IONIC_PATH=`which ionic`
CORDOVA_PATH=`which cordova`
CORDOVA_RES_PATH=`which cordova-res`
NATIVE_RUN_PATH=`which native-run`
WEB_EXT_PATH=`which web-ext`
Benoit Lavenier
committed
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
Benoit Lavenier
committed
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
Benoit Lavenier
committed
if ! test -d "${PROJECT_DIR}/node_modules"; then
echo "Installing project dependencies..."
Benoit Lavenier
committed
cd "${PROJECT_DIR}"
# Install project submodules
Benoit Lavenier
committed
if ! test -d "${PROJECT_DIR}/platforms/android" || ! test -d "${PROJECT_DIR}/dist/desktop"; then
Benoit Lavenier
committed
#echo "Installing project submodules..."
#cd "${PROJECT_DIR}"
#git submodule init && git submodule sync && git submodule update --remote --merge
Benoit Lavenier
committed
if ! test $? == 0; then
echo "ERROR: Unable to sync git submodule. Will not be able to build android and desktop artifacts!"
#exit 1
Benoit Lavenier
committed
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!"