mirror of
https://github.com/dexoron/dcr.git
synced 2026-10-21 10:58:29 +00:00
138 lines
4.3 KiB
YAML
138 lines
4.3 KiB
YAML
name: AUR Publish
|
||
|
||
on:
|
||
workflow_dispatch:
|
||
inputs:
|
||
version:
|
||
description: "Tag version without v prefix (e.g. 0.2.2)"
|
||
required: true
|
||
push:
|
||
tags:
|
||
- "v*"
|
||
|
||
permissions:
|
||
contents: read
|
||
|
||
jobs:
|
||
publish-aur:
|
||
# Не публикуем dev/pre-release теги в AUR
|
||
if: "!contains(github.ref_name, '-')"
|
||
runs-on: ubuntu-latest
|
||
environment: aur
|
||
steps:
|
||
- name: Checkout
|
||
uses: actions/checkout@v4
|
||
|
||
- name: Derive version and checksum
|
||
id: meta
|
||
shell: bash
|
||
run: |
|
||
set -euo pipefail
|
||
if [[ "${GITHUB_EVENT_NAME}" == "workflow_dispatch" ]]; then
|
||
PKGVER="${{ inputs.version }}"
|
||
else
|
||
PKGVER="${GITHUB_REF_NAME#v}"
|
||
fi
|
||
SRC_URL="https://github.com/dexoron/dcr/archive/refs/tags/v${PKGVER}.tar.gz"
|
||
SHA256="$(curl -fsSL "$SRC_URL" | sha256sum | awk '{print $1}')"
|
||
|
||
echo "pkgver=$PKGVER" >> "$GITHUB_OUTPUT"
|
||
echo "source_url=$SRC_URL" >> "$GITHUB_OUTPUT"
|
||
echo "sha256=$SHA256" >> "$GITHUB_OUTPUT"
|
||
|
||
- name: Render AUR metadata
|
||
shell: bash
|
||
run: |
|
||
set -euo pipefail
|
||
PKGVER='${{ steps.meta.outputs.pkgver }}'
|
||
SRC_URL='${{ steps.meta.outputs.source_url }}'
|
||
SHA256='${{ steps.meta.outputs.sha256 }}'
|
||
|
||
cat > packaging/aur/dcr/PKGBUILD <<PKG
|
||
pkgname=dcr
|
||
pkgver=${PKGVER}
|
||
pkgrel=1
|
||
pkgdesc="Cargo-like utility to manage C/C++ projects"
|
||
arch=('x86_64' 'aarch64')
|
||
url="https://github.com/dexoron/dcr"
|
||
license=('MIT')
|
||
depends=('gcc-libs')
|
||
makedepends=('cargo')
|
||
options=('!lto')
|
||
optdepends=(
|
||
'gcc: build C/C++ projects with GCC'
|
||
'clang: build C/C++ projects with Clang'
|
||
)
|
||
source=("\$pkgname-\$pkgver.tar.gz::\$url/archive/refs/tags/v\$pkgver.tar.gz")
|
||
sha256sums=('${SHA256}')
|
||
|
||
build() {
|
||
cd "\$srcdir/\$pkgname-\$pkgver"
|
||
export CARGO_PROFILE_RELEASE_LTO=false
|
||
export RUSTFLAGS="\${RUSTFLAGS:-}"
|
||
export RUSTFLAGS="\${RUSTFLAGS/-C link-arg=-fuse-ld=lld/}"
|
||
cargo build --release --locked
|
||
}
|
||
|
||
package() {
|
||
cd "\$srcdir/\$pkgname-\$pkgver"
|
||
install -Dm755 "target/release/dcr" "\$pkgdir/usr/bin/dcr"
|
||
install -Dm644 LICENSE "\$pkgdir/usr/share/licenses/\$pkgname/LICENSE"
|
||
}
|
||
PKG
|
||
|
||
cat > packaging/aur/dcr/.SRCINFO <<SRC
|
||
pkgbase = dcr
|
||
pkgdesc = Cargo-like utility to manage C/C++ projects
|
||
pkgver = ${PKGVER}
|
||
pkgrel = 1
|
||
url = https://github.com/dexoron/dcr
|
||
arch = x86_64
|
||
arch = aarch64
|
||
license = MIT
|
||
makedepends = cargo
|
||
depends = gcc-libs
|
||
optdepends = gcc: build C/C++ projects with GCC
|
||
optdepends = clang: build C/C++ projects with Clang
|
||
options = !lto
|
||
source = dcr-${PKGVER}.tar.gz::${SRC_URL}
|
||
sha256sums = ${SHA256}
|
||
|
||
pkgname = dcr
|
||
SRC
|
||
|
||
- name: Push to AUR
|
||
env:
|
||
AUR_SSH_PRIVATE_KEY: ${{ secrets.AUR_SSH_PRIVATE_KEY }}
|
||
AUR_PACKAGE: dcr
|
||
shell: bash
|
||
run: |
|
||
set -euo pipefail
|
||
|
||
if [[ -z "${AUR_SSH_PRIVATE_KEY:-}" ]]; then
|
||
echo "AUR_SSH_PRIVATE_KEY secret is missing"
|
||
exit 1
|
||
fi
|
||
|
||
install -d -m 700 ~/.ssh
|
||
printf '%s\n' "$AUR_SSH_PRIVATE_KEY" > ~/.ssh/aur
|
||
chmod 600 ~/.ssh/aur
|
||
ssh-keyscan aur.archlinux.org >> ~/.ssh/known_hosts
|
||
|
||
export GIT_SSH_COMMAND='ssh -i ~/.ssh/aur -o IdentitiesOnly=yes'
|
||
git clone "ssh://aur@aur.archlinux.org/${AUR_PACKAGE}.git" aur-repo
|
||
cp packaging/aur/dcr/PKGBUILD aur-repo/PKGBUILD
|
||
cp packaging/aur/dcr/.SRCINFO aur-repo/.SRCINFO
|
||
|
||
cd aur-repo
|
||
git config user.name "github-actions[bot]"
|
||
git config user.email "github-actions[bot]@users.noreply.github.com"
|
||
|
||
if git diff --quiet; then
|
||
echo "No AUR changes"
|
||
exit 0
|
||
fi
|
||
|
||
git add PKGBUILD .SRCINFO
|
||
git commit -m "dcr ${{ steps.meta.outputs.pkgver }}"
|
||
git push |