#!/usr/bin/env bash
# Build HSRename as an AppImage.
# Requires: pip install -r requirements.txt -r requirements-build.txt
# Optional: appimagetool from https://github.com/AppImage/appimagetool/releases (for building the final .AppImage)
# Uses HSRename.png in the project folder as the app icon.

set -e
cd "$(dirname "$0")"
APP_NAME="HSRename"
APPDIR="${APP_NAME}.AppDir"
EXE_NAME="$APP_NAME"

echo "=== Installing build deps ==="
pip install -q -r requirements.txt -r requirements-build.txt

echo "=== Running PyInstaller ==="
pyinstaller --noconfirm --onedir --windowed \
  -n "$EXE_NAME" \
  --hidden-import=engine \
  --hidden-import=engine.rules \
  --hidden-import=engine.pipeline \
  --hidden-import=gui \
  --hidden-import=gui.main_window \
  --hidden-import=gui.rule_widgets \
  main.py

echo "=== Creating AppDir ==="
rm -rf "$APPDIR"
mkdir -p "$APPDIR/usr/bin"
cp -a "dist/$EXE_NAME" "$APPDIR/usr/bin/"

cat > "$APPDIR/AppRun" << EOF
#!/bin/sh
SELF=\$(readlink -f "\$0")
HERE=\${SELF%/*}
exec "\$HERE/usr/bin/$EXE_NAME/$EXE_NAME" "\$@"
EOF
chmod +x "$APPDIR/AppRun"

cat > "$APPDIR/hsrename.desktop" << 'EOF'
[Desktop Entry]
Name=HSRename
Comment=Mass rename files with preview and flexible rules
Exec=HSRename
Icon=HSRename
Type=Application
Categories=Utility;FileTools;
EOF
# Use project icon as app icon and logo
if [[ -f HSRename.png ]]; then
  cp HSRename.png "$APPDIR/HSRename.png"
else
  echo "Warning: HSRename.png not found; appimagetool may fail or use no icon."
fi

echo "=== Building AppImage (requires appimagetool) ==="
# Optional: set VERSION when building for release so update info is embedded (for Gear Lever etc.)
# e.g. VERSION=v1.0.1 ./build_appimage.sh
GITEA_RELEASES="http://brassnet.ddns.net:33983/Dawnsorrow/HS-Rename/releases"
UPDATE_INFO=""
if [[ -n "${VERSION:-}" ]]; then
  UPDATE_INFO="-u url|${GITEA_RELEASES}/download/${VERSION}/HSRename.AppImage"
fi
if command -v appimagetool &>/dev/null; then
  OUT="${APP_NAME}.AppImage"
  # shellcheck disable=SC2086
  appimagetool $UPDATE_INFO "$APPDIR" "$OUT"
  echo "Done: $OUT"
else
  echo "AppDir is ready at $APPDIR/"
  echo "To create the .AppImage, install appimagetool and run:"
  echo "  appimagetool $APPDIR ${APP_NAME}.AppImage"
  echo "  # Get it from: https://github.com/AppImage/appimagetool/releases"
fi
