name: Build AppImage Release

on:
  workflow_dispatch:

permissions:
  contents: write

env:
  FORCE_JAVASCRIPT_ACTIONS_TO_NODE24: true

jobs:
  build:
    runs-on: ubuntu-22.04
    
    steps:
    - name: Checkout main
      uses: actions/checkout@v6
      with:
        ref: main
        token: ${{ secrets.GITHUB_TOKEN }}
      
    - name: Setup Node.js
      uses: actions/setup-node@v6
      with:
        node-version: '22'
        
    - name: Install dependencies
      working-directory: AppImage
      run: npm install --legacy-peer-deps
      
    - name: Build Next.js app
      working-directory: AppImage
      run: npm run build
      
    - name: Install Python dependencies
      run: |
        sudo apt-get update
        sudo apt-get install -y python3 python3-pip python3-venv
        
    - name: Make build script executable
      working-directory: AppImage
      run: chmod +x scripts/build_appimage.sh
      
    - name: Build AppImage
      working-directory: AppImage
      run: ./scripts/build_appimage.sh
      
    - name: Get version from package.json
      id: version
      working-directory: AppImage
      run: echo "VERSION=$(node -p "require('./package.json').version")" >> $GITHUB_OUTPUT

    - name: Generate SHA256 checksum
      run: |
        cd AppImage/dist
        sha256sum *.AppImage > ProxMenux-Monitor.AppImage.sha256
        echo "Generated SHA256:"
        cat ProxMenux-Monitor.AppImage.sha256

    - name: Upload AppImage artifact
      uses: actions/upload-artifact@v6
      with:
        name: ProxMenux-${{ steps.version.outputs.VERSION }}-AppImage
        path: |
          AppImage/dist/*.AppImage
          AppImage/dist/*.sha256
        retention-days: 30

    - name: Commit AppImage to main
      env:
        GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
      run: |
        git config --global user.name "github-actions[bot]"
        git config --global user.email "github-actions[bot]@users.noreply.github.com"

        rm -f AppImage/*.AppImage AppImage/*.sha256 || true
        cp AppImage/dist/*.AppImage AppImage/
        cp AppImage/dist/ProxMenux-Monitor.AppImage.sha256 AppImage/

        git add AppImage/*.AppImage AppImage/*.sha256
        git commit -m "Update AppImage release build ($(date +'%Y-%m-%d %H:%M:%S'))" || echo "No changes to commit"
        git push origin main
