#!/usr/bin/env bash # Build Bulk Renamer as an AppImage. # Requires: pip install -r requirements.txt -r requirements-build.txt # Optional: appimagetool from https://github.com/AppImage/AppImageKit/releases (for building the final .AppImage) set -e cd "$(dirname "$0")" APP_NAME="BulkRenamer" 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/BulkRenamer/BulkRenamer" "$@" EOF chmod +x "$APPDIR/AppRun" cat > "$APPDIR/bulk-renamer.desktop" << 'EOF' [Desktop Entry] Name=Bulk Renamer Comment=Mass rename files with preview and flexible rules Exec=BulkRenamer Icon=bulk-renamer Type=Application Categories=Utility;FileTools; EOF echo "=== Building AppImage (requires appimagetool) ===" if command -v appimagetool &>/dev/null; then OUT="${APP_NAME}.AppImage" appimagetool "$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/AppImageKit/releases" fi