Skip to main content

max / audiofiles

1.7 KB · 61 lines History Blame Raw
1 #!/usr/bin/env bash
2 set -euo pipefail
3
4 SCRIPT_DIR="$(cd "$(dirname "$0")" && pwd)"
5 PROJECT_DIR="$(cd "$SCRIPT_DIR/.." && pwd)"
6 DIST_DIR="$SCRIPT_DIR"
7 TOOLS_DIR="$DIST_DIR/tools"
8 ARCH=$(uname -m)
9
10 # Read version from Cargo.toml
11 VERSION=$(grep '^version' "$PROJECT_DIR/crates/audiofiles-app/Cargo.toml" | head -1 | sed 's/.*"\(.*\)".*/\1/')
12 echo "Building AudioFiles v${VERSION} AppImage (${ARCH})"
13
14 # Step 1: Build release binary
15 echo "==> Building release binary..."
16 cd "$PROJECT_DIR"
17 cargo build --release -p audiofiles-app
18
19 # Step 2: Create AppDir
20 echo "==> Assembling AppDir..."
21 APPDIR="$DIST_DIR/AppDir"
22 rm -rf "$APPDIR"
23 mkdir -p "$APPDIR/usr/bin"
24
25 cp "$PROJECT_DIR/target/release/audiofiles-app" "$APPDIR/usr/bin/audiofiles-app"
26 cp "$DIST_DIR/audiofiles.desktop" "$APPDIR/audiofiles.desktop"
27 cp "$DIST_DIR/audiofiles.png" "$APPDIR/audiofiles.png"
28
29 # AppRun wrapper
30 cat > "$APPDIR/AppRun" << 'APPRUN'
31 #!/usr/bin/env bash
32 SELF="$(readlink -f "$0")"
33 HERE="${SELF%/*}"
34 exec "${HERE}/usr/bin/audiofiles-app" "$@"
35 APPRUN
36 chmod +x "$APPDIR/AppRun"
37
38 # Step 3: Get appimagetool
39 mkdir -p "$TOOLS_DIR"
40 APPIMAGETOOL="$TOOLS_DIR/appimagetool-${ARCH}.AppImage"
41 if [ ! -x "$APPIMAGETOOL" ]; then
42 echo "==> Downloading appimagetool..."
43 curl -fSL "https://github.com/AppImage/appimagetool/releases/download/continuous/appimagetool-${ARCH}.AppImage" \
44 -o "$APPIMAGETOOL"
45 chmod +x "$APPIMAGETOOL"
46 fi
47
48 # Step 4: Build AppImage
49 echo "==> Creating AppImage..."
50 APPIMAGE_NAME="AudioFiles-${VERSION}-${ARCH}.AppImage"
51 APPIMAGE_PATH="$DIST_DIR/$APPIMAGE_NAME"
52 rm -f "$APPIMAGE_PATH"
53
54 ARCH="$ARCH" "$APPIMAGETOOL" "$APPDIR" "$APPIMAGE_PATH"
55
56 # Cleanup
57 rm -rf "$APPDIR"
58
59 echo ""
60 echo "Done: $APPIMAGE_PATH"
61