prmt 0.6.0

Ultra-fast, customizable shell prompt generator with zero-copy parsing
Documentation
name: AUR
on:
  workflow_run:
    workflows: [ "Release" ]
    types: [ completed ]

jobs:
  pkgbuild:
    if: ${{ github.event.workflow_run.conclusion == 'success' }}
    runs-on: ubuntu-24.04
    container: archlinux:latest
    steps:
      - name: Prepare Arch toolchain
        run: |
          pacman -Syu --noconfirm base-devel git fakeroot curl

      - uses: actions/checkout@v4

      - name: Create builder user
        run: |
          useradd -m builder
          chown -R builder:builder "$GITHUB_WORKSPACE"

      - name: Trust workspace ownership
        run: git config --global --add safe.directory "$GITHUB_WORKSPACE"

      - name: Resolve release metadata
        id: meta
        env:
          RUN_HEAD_BRANCH: ${{ github.event.workflow_run.head_branch }}
          RUN_HEAD_SHA: ${{ github.event.workflow_run.head_sha }}
        run: |
          set -euo pipefail
          git fetch --force --tags
          tag="${RUN_HEAD_BRANCH}"
          if [[ -z "$tag" ]]; then
            tag="$(git tag --points-at "$RUN_HEAD_SHA" | head -n1)"
          fi
          if [[ -z "$tag" ]]; then
            echo "Unable to determine tag for ${RUN_HEAD_SHA}" >&2
            exit 1
          fi
          echo "tag=$tag" >> "$GITHUB_OUTPUT"
          echo "version=${tag#v}" >> "$GITHUB_OUTPUT"

      - name: Resolve release checksums
        id: sums
        env:
          REPO: ${{ github.repository }}
          TAG: ${{ steps.meta.outputs.tag }}
          GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
        run: |
          set -euo pipefail
          specs=(
            "x86_64:x86_64-unknown-linux-musl:ubuntu-24.04"
            "aarch64:aarch64-unknown-linux-musl:ubuntu-24.04"
            "armv7h:armv7-unknown-linux-musleabihf:ubuntu-24.04"
          )
          for spec in "${specs[@]}"; do
            IFS=':' read -r arch target os_label <<<"$spec"
            asset="prmt-${target}-${os_label}.tar.gz"
            url="https://github.com/${REPO}/releases/download/${TAG}/${asset}.sha256"
            checksum="$(curl -sSfL -H "Authorization: Bearer ${GITHUB_TOKEN}" "$url" | awk '{print $1}')"
            echo "sha256_${arch}=${checksum}" >> "$GITHUB_OUTPUT"
            echo "asset_${arch}=${asset}" >> "$GITHUB_OUTPUT"
          done

      - name: Generate PKGBUILD and .SRCINFO
        env:
          VERSION: ${{ steps.meta.outputs.version }}
          SHA256_X86_64: ${{ steps.sums.outputs.sha256_x86_64 }}
          SHA256_AARCH64: ${{ steps.sums.outputs.sha256_aarch64 }}
          SHA256_ARMV7H: ${{ steps.sums.outputs.sha256_armv7h }}
          ASSET_X86_64: ${{ steps.sums.outputs.asset_x86_64 }}
          ASSET_AARCH64: ${{ steps.sums.outputs.asset_aarch64 }}
          ASSET_ARMV7H: ${{ steps.sums.outputs.asset_armv7h }}
        run: |
          set -euo pipefail
          cat > PKGBUILD <<EOF
          pkgname=prmt-bin
          pkgver=${VERSION}
          pkgrel=1
          pkgdesc='Ultra-fast customizable shell prompt (single Rust binary)'
          arch=('x86_64' 'aarch64' 'armv7h')
          url='https://github.com/3axap4eHko/prmt'
          license=('MIT')
          provides=('prmt')
          conflicts=('prmt')
          source_x86_64=("https://github.com/3axap4eHko/prmt/releases/download/v${VERSION}/${ASSET_X86_64}")
          source_aarch64=("https://github.com/3axap4eHko/prmt/releases/download/v${VERSION}/${ASSET_AARCH64}")
          source_armv7h=("https://github.com/3axap4eHko/prmt/releases/download/v${VERSION}/${ASSET_ARMV7H}")
          sha256sums_x86_64=('${SHA256_X86_64}')
          sha256sums_aarch64=('${SHA256_AARCH64}')
          sha256sums_armv7h=('${SHA256_ARMV7H}')
          package() {
            tar -xzf prmt-*.tar.gz
            install -Dm755 prmt*/prmt "$pkgdir/usr/bin/prmt"
            install -Dm644 prmt*/LICENSE "$pkgdir/usr/share/licenses/$pkgname/LICENSE"
          }
          EOF
          chown builder:builder PKGBUILD
          runuser -u builder -- bash -c '
            set -euo pipefail
            cd "$GITHUB_WORKSPACE"
            makepkg --printsrcinfo > .SRCINFO
          '

      - uses: actions/upload-artifact@v4
        with:
          name: aur
          path: |
            PKGBUILD
            .SRCINFO