azterm 0.1.6

Fast, modern native cross-platform terminal, SSH profile manager, and SFTP client
name: Release Builds

on:
  push:
    tags:
      - 'v*'

permissions:
  contents: write

jobs:
  build-linux:
    name: Linux Packages (.AppImage, .deb, .tar.gz)
    runs-on: ubuntu-latest
    steps:
      - name: Checkout Repository
        uses: actions/checkout@v4

      - name: Install System Dependencies
        run: |
          sudo apt-get update
          sudo apt-get install -y libxcb-render0-dev libxcb-shape0-dev libxcb-xfixes0-dev libxkbcommon-dev libssl-dev pkg-config curl

      - name: Install Rust Toolchain
        uses: dtolnay/rust-toolchain@stable

      - name: Install cargo-deb
        run: cargo install cargo-deb

      - name: Build All Linux Packages
        run: |
          mkdir -p dist target/stage-linux target/AppDir/usr/bin target/AppDir/usr/share/applications target/AppDir/usr/share/icons/hicolor/scalable/apps target/AppDir/usr/share/icons/hicolor/256x256/apps
          
          # 1. Compile Release Binary
          cargo build --release
          
          # 2. Build .deb Package
          cargo deb -o dist/azterm_0.1.0_amd64.deb
          
          # 3. Build Tarball
          cp target/release/azterm target/stage-linux/
          cp assets/azterm.desktop target/stage-linux/
          cp assets/azterm.svg target/stage-linux/
          tar -czf dist/azterm-linux-x86_64.tar.gz -C target/stage-linux .
          
          # 4. Build AppImage
          cp target/release/azterm target/AppDir/usr/bin/azterm
          cp assets/azterm.desktop target/AppDir/azterm.desktop
          cp assets/azterm.desktop target/AppDir/usr/share/applications/azterm.desktop
          cp assets/azterm.svg target/AppDir/azterm.svg
          cp assets/azterm.svg target/AppDir/usr/share/icons/hicolor/scalable/apps/azterm.svg
          
          printf '#!/bin/sh\nSELF=$(readlink -f "$0")\nHERE=${SELF%%/*}\nexport PATH="${HERE}/usr/bin:${PATH}"\nexec "${HERE}/usr/bin/azterm" "$@"\n' > target/AppDir/AppRun
          chmod +x target/AppDir/AppRun
          
          curl -sLo target/appimagetool https://github.com/AppImage/AppImageKit/releases/download/continuous/appimagetool-x86_64.AppImage
          chmod +x target/appimagetool
          ARCH=x86_64 ./target/appimagetool --appimage-extract-and-run target/AppDir dist/AZTerm-x86_64.AppImage

      - name: Upload Linux Release Assets
        uses: softprops/action-gh-release@v2
        with:
          files: |
            dist/AZTerm-x86_64.AppImage
            dist/azterm_0.1.0_amd64.deb
            dist/azterm-linux-x86_64.tar.gz

  build-windows:
    name: Windows Package (.zip)
    runs-on: windows-latest
    steps:
      - name: Checkout Repository
        uses: actions/checkout@v4

      - name: Install Rust Toolchain
        uses: dtolnay/rust-toolchain@stable

      - name: Build Windows Binary
        run: cargo build --release

      - name: Package Windows Zip
        run: |
          mkdir dist
          Compress-Archive -Path target\release\azterm.exe -DestinationPath dist\azterm-windows-x86_64.zip

      - name: Upload Windows Release Assets
        uses: softprops/action-gh-release@v2
        with:
          files: dist/azterm-windows-x86_64.zip

  build-macos:
    name: macOS Package (.tar.gz)
    runs-on: macos-latest
    steps:
      - name: Checkout Repository
        uses: actions/checkout@v4

      - name: Install Rust Toolchain
        uses: dtolnay/rust-toolchain@stable

      - name: Build macOS Binary
        run: cargo build --release

      - name: Package macOS Tarball
        run: |
          mkdir -p dist
          tar -czf dist/azterm-macos-universal.tar.gz -C target/release azterm

      - name: Upload macOS Release Assets
        uses: softprops/action-gh-release@v2
        with:
          files: dist/azterm-macos-universal.tar.gz