#!/bin/bash if [[ $# -ne 4 ]]; then echo "Build script has to be called with exactly two arguments." echo "The version number (Major.Minor.Patch) as its first argument." echo "... and the OS (linux, windows or macos) as the second argument" echo "TODO: DOCUMENT ARGUMENTS 3 & 4!!!" echo "Aborting..." exit 1 fi VERSION=$1 regex='^([0-9]+\.){0,2}(\*|[0-9]+)$' if [[ $VERSION =~ $regex ]]; then echo "Version accepted: $VERSION" else echo "Version '$VERSION' is not acceptable. Aborting..." exit 1 fi PLATFORM=$2 TARGET=$3 EXECUTABLE="$TARGET-Widgets" BUILD_PREFIX="_build/UIs/GenericWidgets" # TODO refactor this to use PLATFORMS.contains(PLATFORM) if [[ $PLATFORM == linux ]]; then echo "OS: $PLATFORM" BUILD_DIR=$BUILD_PREFIX elif [[ $PLATFORM == windows ]]; then echo "OS: $PLATFORM" BUILD_DIR="$BUILD_PREFIX/release" elif [[ $PLATFORM == macos ]]; then echo "OS: $PLATFORM" BUILD_DIR=$BUILD_PREFIX else echo "Version '$PLATFORM' is not acceptable. Aborting..." exit 1 fi #if [[ ! -e .env ]]; then # echo "File .env not found. Aborting..." # exit 1 #fi #echo "Sourcing .env file..." #source .env PACKAGENAME=$4 INSTALLER_DIR="_build/installer" PKG_DATA_DIR="$INSTALLER_DIR/packages/$PACKAGENAME/data" PKG_META_DIR="$INSTALLER_DIR/packages/$PACKAGENAME/meta" ASSET_DIR="../assets/icons" OUTPUT_DIR="../_output/installer" if [[ -e $PKG_DATA_DIR/$TARGET ]]; then echo "old $TARGET exe exists, cleaning the package data directory..." rm -r $PKG_DATA_DIR/* fi if [[ ! -d $PKG_DATA_DIR ]]; then echo "creating package data folder..." mkdir -p $PKG_DATA_DIR fi mv $INSTALLER_DIR/packages/meta $PKG_META_DIR echo "copying executable..." if [[ $PLATFORM == macos ]]; then cp -r $BUILD_DIR/$EXECUTABLE.app $PKG_DATA_DIR/$TARGET.app else cp $BUILD_DIR/$EXECUTABLE $PKG_DATA_DIR/$TARGET fi echo "copying assets..." cp $ASSET_DIR/$TARGET.png $PKG_DATA_DIR/$TARGET.png echo "copying license..." cp ../LICENSE $PKG_META_DIR/license.txt ### Platform dependencies echo "Applying platform dependencies..." INSTALLER_APPENDIX="installer" if [[ $PLATFORM == linux ]]; then echo "Linux..." # echo "Patching the config.xml" # sed -i "s//$PLATFORM/g" config/config.xml elif [[ $PLATFORM == windows ]]; then echo "Windows..." cd $PKG_DATA_DIR echo "Copying OpenSSL dlls..." cp /c/Qt/Tools/OpenSSL/Win_x64/bin/libcrypto-1_1-x64.dll . cp /c/Qt/Tools/OpenSSL/Win_x64/bin/libssl-1_1-x64.dll . echo "Calling windeployqt..." $QMAKE_LOCATION/windeployqt $TARGET.exe cd - # echo "Patching the config.xml" # sed -i "s//$PLATFORM/g" config/config.xml elif [[ $PLATFORM == macos ]]; then echo "MacOS..." echo "Calling macdeployqt..." INSTALLER_APPENDIX="installer.dmg" cd $PKG_DATA_DIR macdeployqt $TARGET.app cd - # echo "Patching the config.xml..." # sed -i '' "s//$PLATFORM/g" config/config.xml fi echo "running binarycreator..." #echo "$QIF_LOCATION/binarycreator" binarycreator -n -c $INSTALLER_DIR/config/config.xml -p $INSTALLER_DIR/packages $OUTPUT_DIR/$TARGET-$PLATFORM-$VERSION-$INSTALLER_APPENDIX-online binarycreator -f -c $INSTALLER_DIR/config/config.xml -p $INSTALLER_DIR/packages $OUTPUT_DIR/$TARGET-$PLATFORM-$VERSION-$INSTALLER_APPENDIX-offline