blob: deaa00383b5a0532b6a040cb2eebdf8759b364af (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
|
name: Hyprland Stack Update Check
on:
schedule:
- cron: '0 6 * * 1,4'
workflow_dispatch:
concurrency:
group: hyprland-update-check
cancel-in-progress: false
jobs:
check-update:
runs-on: iso-builder
steps:
- name: Checkout
uses: actions/checkout@v4
with:
fetch-depth: 0
token: ${{ secrets.FORGEJO_TOKEN }}
- name: Check for existing open PR
id: prcheck
run: |
set -euo pipefail
OPEN_PRS=$(curl -fsSL \
-H "Authorization: token ${{ secrets.FORGEJO_TOKEN }}" \
"https://git.rp1.hu/api/v1/repos/${{ github.repository }}/pulls?state=open&limit=50")
EXISTS=$(echo "$OPEN_PRS" | python3 -c "
import sys, json
pulls = json.load(sys.stdin)
found = any(p.get('head', {}).get('ref', '').startswith('update/hyprland-stack') for p in pulls)
print('yes' if found else 'no')
")
echo "EXISTS=$EXISTS" >> $GITHUB_OUTPUT
echo "Open PR exists: $EXISTS"
- name: Check upstream versions
id: check
if: steps.prcheck.outputs.EXISTS == 'no'
run: |
set -euo pipefail
sudo pacman -S --needed --noconfirm pacman-contrib curl jq
UPDATED_PKGS=()
SUMMARY=""
PKGS=(
hyprutils
hyprlang
hyprwayland-scanner
aquamarine
hyprcursor
hyprgraphics
hyprwire
hyprland-guiutils
hyprland
xdg-desktop-portal-hyprland
hyprpolkitagent
hyprland-qt-support
dms-shell
)
for pkg in "${PKGS[@]}"; do
dir="hyprland-raveos/$pkg"
[ -d "$dir" ] || continue
LOCAL_VER=$(grep '^pkgver=' "$dir/PKGBUILD" | head -1 | cut -d= -f2 | tr -d "'\"")
UPSTREAM_PKGBUILD=$(curl -fsSL --retry 3 "https://gitlab.archlinux.org/archlinux/packaging/packages/${pkg}/-/raw/main/PKGBUILD" 2>/dev/null || true)
[ -n "$UPSTREAM_PKGBUILD" ] || continue
UPSTREAM_VER=$(echo "$UPSTREAM_PKGBUILD" | grep '^pkgver=' | head -1 | cut -d= -f2 | tr -d "'\"")
[ -n "$UPSTREAM_VER" ] || continue
if [ "$LOCAL_VER" != "$UPSTREAM_VER" ]; then
echo "Update available for $pkg: $LOCAL_VER -> $UPSTREAM_VER"
sed -i "s/^pkgver=.*/pkgver=${UPSTREAM_VER}/" "$dir/PKGBUILD"
(cd "$dir" && updpkgsums)
UPDATED_PKGS+=("$pkg")
SUMMARY="${SUMMARY}\n- **${pkg}**: \`${LOCAL_VER}\` -> \`${UPSTREAM_VER}-10\`"
else
echo "$pkg is up-to-date ($LOCAL_VER)"
fi
done
if [ ${#UPDATED_PKGS[@]} -gt 0 ]; then
echo "HAS_UPDATES=yes" >> $GITHUB_OUTPUT
echo "COUNT=${#UPDATED_PKGS[@]}" >> $GITHUB_OUTPUT
echo -e "SUMMARY<<EOF\n${SUMMARY}\nEOF" >> $GITHUB_OUTPUT
else
echo "HAS_UPDATES=no" >> $GITHUB_OUTPUT
echo "No updates found for hyprland stack."
fi
- name: Create branch and open single Pull Request
if: steps.prcheck.outputs.EXISTS == 'no' && steps.check.outputs.HAS_UPDATES == 'yes'
env:
COUNT: ${{ steps.check.outputs.COUNT }}
SUMMARY: ${{ steps.check.outputs.SUMMARY }}
run: |
set -euo pipefail
DATE=$(date +%Y%m%d-%H%M)
BRANCH="update/hyprland-stack-${DATE}"
git config user.name "RaveOS Bot"
git config user.email "bot@raveos.hu"
git checkout -b "$BRANCH"
git add hyprland-raveos/
git commit -m "update: hyprland stack (${COUNT} packages)"
git push origin "$BRANCH"
PR_BODY="$(printf 'Automata Hyprland stack frissítés (%s csomag):\n%s\n\nA csomagok a merge után az \`iso-builder\` runneren sorrendben fordulnak le, GPG aláírással kerülnek a RaveOS repóba.' "$COUNT" "$SUMMARY")"
curl -fsSL -X POST \
-H "Authorization: token ${{ secrets.FORGEJO_TOKEN }}" \
-H "Content-Type: application/json" \
"https://git.rp1.hu/api/v1/repos/${{ github.repository }}/pulls" \
-d "$(jq -n \
--arg title "Hyprland stack frissítés (${COUNT} csomag)" \
--arg head "$BRANCH" \
--arg base "main" \
--arg body "$PR_BODY" \
'{title: $title, head: $head, base: $base, body: $body}')"
echo "Single PR successfully opened for hyprland stack update."
|