mirror of
https://github.com/lone-cloud/gerbil
synced 2026-06-03 09:33:10 -07:00
155 lines
5.9 KiB
YAML
155 lines
5.9 KiB
YAML
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
|