#!/usr/bin/env bash
set -e
TOOL_DIR=$(pwd)/target/linux/linuxdeploy
TARGET_DIR=$(pwd)/target/linux/AppImage
BUILD_DIR=$TARGET_DIR/build
OUTPUT_DIR=$TARGET_DIR/out
BASE_DIR=$(pwd)

mkdir -p $TOOL_DIR

if ls $TOOL_DIR/linuxdeploy*.AppImage 1> /dev/null 2>&1; then
  echo "Skipping download of linuxdeploy"
else
  echo "Downloading linuxdeploy tool"
  wget https://github.com/linuxdeploy/linuxdeploy/releases/download/continuous/linuxdeploy-x86_64.AppImage -P "$TOOL_DIR"
  chmod +x $TOOL_DIR/linuxdeploy*.AppImage
fi

if ls $TOOL_DIR/appimagetool*.AppImage 1> /dev/null 2>&1; then
  echo "Skipping download of appimagetool"
else
  echo "Downloading appimagetool"
  wget https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage -P "$TOOL_DIR"
  chmod +x $TOOL_DIR/appimagetool*.AppImage
fi

rm -Rf "$TARGET_DIR"
mkdir -p $OUTPUT_DIR
mkdir -p $BUILD_DIR

echo Building AppImage into $OUTPUT_DIR
pushd $OUTPUT_DIR
$TOOL_DIR/linuxdeploy*.AppImage --appimage-extract-and-run -e "$BASE_DIR/$EXEC_PATH" \
  -d "$BASE_DIR/espanso/src/res/linux/espanso.desktop" \
  -i "$BASE_DIR/espanso/src/res/linux/icon.png" \
  --appdir $BUILD_DIR \
  --output appimage
chmod +x ./Espanso*.AppImage

# Apply a workaround to fix this issue: https://github.com/federico-terzi/espanso/issues/900
# See: https://github.com/project-slippi/Ishiiruka/issues/323#issuecomment-977415376

echo "Applying patch for libgmodule"

./Espanso*.AppImage --appimage-extract
rm -Rf ./Espanso*.AppImage
rm -Rf squashfs-root/usr/lib/libgmodule*
$TOOL_DIR/appimagetool*.AppImage --appimage-extract-and-run -v squashfs-root
rm -Rf squashfs-root

popd