name: AUR Release permissions: contents: read actions: read on: workflow_dispatch: inputs: tag: description: 'Tag version to release to AUR (e.g., v0.5.1)' required: true type: string workflow_call: inputs: tag: description: 'Tag version to release to AUR' required: true type: string jobs: aur-release: runs-on: ubuntu-latest steps: - name: Checkout repository uses: actions/checkout@v4 with: ref: ${{ inputs.tag }} - name: Get release information id: release_info run: | TAG="${{ inputs.tag }}" VERSION=${TAG#v} echo "version=$VERSION" >> $GITHUB_OUTPUT echo "tag=$TAG" >> $GITHUB_OUTPUT # Get author info from package.json AUTHOR_NAME=$(node -p "require('./package.json').author.name") AUTHOR_EMAIL=$(node -p "require('./package.json').author.email") echo "author_name=$AUTHOR_NAME" >> $GITHUB_OUTPUT echo "author_email=$AUTHOR_EMAIL" >> $GITHUB_OUTPUT # Get AppImage download URL from GitHub release APPIMAGE_URL="https://github.com/lone-cloud/friendly-kobold/releases/download/$TAG/Friendly%20Kobold-$VERSION.AppImage" echo "appimage_url=$APPIMAGE_URL" >> $GITHUB_OUTPUT # Download AppImage to calculate SHA256 curl -L -o "friendly-kobold-$VERSION.AppImage" "$APPIMAGE_URL" SHA256=$(sha256sum "friendly-kobold-$VERSION.AppImage" | cut -d' ' -f1) echo "sha256=$SHA256" >> $GITHUB_OUTPUT echo "Release info:" echo "Version: $VERSION" echo "Tag: $TAG" echo "Author: $AUTHOR_NAME <$AUTHOR_EMAIL>" echo "AppImage URL: $APPIMAGE_URL" echo "SHA256: $SHA256" - name: Generate PKGBUILD run: | cat > PKGBUILD << 'EOF' # Maintainer: ${{ steps.release_info.outputs.author_name }} <${{ steps.release_info.outputs.author_email }}> pkgname=friendly-kobold pkgver=${{ steps.release_info.outputs.version }} pkgrel=1 pkgdesc="A modern Electron shell for KoboldCpp" arch=('x86_64') url="https://github.com/lone-cloud/friendly-kobold" license=('AGPL-3.0-or-later') depends=('gtk3' 'libxss' 'nss' 'alsa-lib') optdepends=('koboldcpp: AI language model backend') provides=('friendly-kobold') conflicts=('friendly-kobold-git') source=("friendly-kobold-${pkgver}.AppImage::${{ steps.release_info.outputs.appimage_url }}") sha256sums=('${{ steps.release_info.outputs.sha256 }}') prepare() { chmod +x "friendly-kobold-${pkgver}.AppImage" "./friendly-kobold-${pkgver}.AppImage" --appimage-extract } package() { # Install the application install -dm755 "${pkgdir}/opt/friendly-kobold" cp -r squashfs-root/* "${pkgdir}/opt/friendly-kobold/" # Create executable wrapper install -dm755 "${pkgdir}/usr/bin" cat > "${pkgdir}/usr/bin/friendly-kobold" << 'WRAPPER' #!/bin/bash exec /opt/friendly-kobold/friendly-kobold "$@" WRAPPER chmod +x "${pkgdir}/usr/bin/friendly-kobold" # Install desktop file install -dm755 "${pkgdir}/usr/share/applications" cat > "${pkgdir}/usr/share/applications/friendly-kobold.desktop" << 'DESKTOP' [Desktop Entry] Name=Friendly Kobold Comment=A modern Electron shell for KoboldCpp Exec=friendly-kobold %U Terminal=false Type=Application Icon=friendly-kobold Categories=Development;Utility; StartupWMClass=friendly-kobold DESKTOP # Install icon install -dm755 "${pkgdir}/usr/share/pixmaps" if [ -f "${pkgdir}/opt/friendly-kobold/resources/assets/icon.png" ]; then cp "${pkgdir}/opt/friendly-kobold/resources/assets/icon.png" "${pkgdir}/usr/share/pixmaps/friendly-kobold.png" fi } EOF - name: Validate PKGBUILD run: | # Install tools needed for validation sudo pacman -Sy --noconfirm namcap # Check PKGBUILD syntax makepkg --printsrcinfo > .SRCINFO namcap PKGBUILD || true - name: Publish to AUR uses: KSXGitHub/github-actions-deploy-aur@v2.7.2 with: pkgname: friendly-kobold pkgbuild: ./PKGBUILD commit_username: ${{ steps.release_info.outputs.author_name }} commit_email: ${{ steps.release_info.outputs.author_email }} ssh_private_key: ${{ secrets.AUR_SSH_PRIVATE_KEY }} commit_message: 'Update to ${{ steps.release_info.outputs.version }}' ssh_keyscan_types: rsa,ecdsa,ed25519 - name: Create AUR release summary run: | echo "## AUR Release Summary" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY echo "📦 **Package**: friendly-kobold" >> $GITHUB_STEP_SUMMARY echo "🔖 **Version**: ${{ steps.release_info.outputs.version }}" >> $GITHUB_STEP_SUMMARY echo "🔗 **AUR Page**: https://aur.archlinux.org/packages/friendly-kobold" >> $GITHUB_STEP_SUMMARY echo "✅ **Status**: Successfully published to AUR" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY echo "### Installation" >> $GITHUB_STEP_SUMMARY echo '```bash' >> $GITHUB_STEP_SUMMARY echo "# Using yay" >> $GITHUB_STEP_SUMMARY echo "yay -S friendly-kobold" >> $GITHUB_STEP_SUMMARY echo "" >> $GITHUB_STEP_SUMMARY echo "# Using paru" >> $GITHUB_STEP_SUMMARY echo "paru -S friendly-kobold" >> $GITHUB_STEP_SUMMARY echo '```' >> $GITHUB_STEP_SUMMARY