Files
GenericQtClient/installer/create-installer.sh

113 lines
3.2 KiB
Bash
Executable File

#!/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>/$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>/$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>/$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