name: Build

on:
  push:
    branches:
      - "*"

permissions:
  contents: write

jobs:
  build:
    runs-on: ubuntu-latest
    container:
      image: ubuntu:22.04

    steps:
      - name: Update APT
        run: apt update

      - name: Install Git and dependencies for Tauri
        run: apt install -y git libwebkit2gtk-4.0-dev build-essential curl wget file libssl-dev libgtk-3-dev libayatana-appindicator3-dev librsvg2-dev

      - name: Checkout Repository
        uses: actions/checkout@v4

      - name: Get Variables
        run: |
          git config --global --add safe.directory /__w/stort/stort
          echo "TAG_NAME=commit-$(date +%Y%m%d)-$(git rev-parse --short HEAD)" >> $GITHUB_ENV

      - name: Install Mise
        run: |
          install -dm 755 /etc/apt/keyrings
          wget -qO - https://mise.jdx.dev/gpg-key.pub | gpg --dearmor | tee /etc/apt/keyrings/mise-archive-keyring.gpg 1> /dev/null
          echo 'deb [signed-by=/etc/apt/keyrings/mise-archive-keyring.gpg arch=amd64] https://mise.jdx.dev/deb stable main' | tee /etc/apt/sources.list.d/mise.list
          apt update
          apt install -y mise

      - name: Install Mise Tools
        run: |
          mise install
          mise settings set experimental true

      - name: Install Bun Packages
        run: mise exec bun --command 'bun install'

      - name: Build Tauri
        run: |
          curl --proto '=https' --tlsv1.2 -sSf https://sh.rustup.rs | sh -s -- -y
          . "$HOME/.cargo/env"
          mise exec bun --command 'bun run tauri build'

      - name: Create Release
        id: create_release
        uses: actions/create-release@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          tag_name: ${{ env.TAG_NAME }}
          release_name: ${{ env.TAG_NAME }}
          draft: false
          prerelease: false

      - name: Upload Build to Release
        uses: actions/upload-release-asset@v1
        env:
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        with:
          upload_url: ${{ steps.create_release.outputs.upload_url }}
          asset_path: ./src-tauri/target/release/bundle/appimage/stort_0.1.0_amd64.AppImage
          asset_name: stort.AppImage
          asset_content_type: application/octet-stream
