blob: 20ee1dca63d768570bbd47b0da0be770279e6b73 (
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
|
#!/usr/bin/env bash
set -euo pipefail
REPO_DIR="${1:-/tmp/raveos-core-repo}"
X86="$REPO_DIR/x86_64"
OWNER="rave-os"
GH_REPO="RaveOS-core-repo-mirror"
TAG="core-repo-x86_64"
API="https://api.github.com/repos/${OWNER}/${GH_REPO}"
UPLOADS="https://uploads.github.com/repos/${OWNER}/${GH_REPO}/releases"
if [ ! -d "$X86" ]; then
echo "Nincs mit tukrozni (${X86}) -> kihagyva"
exit 0
fi
if [ -z "${GH_MIRROR_TOKEN:-}" ]; then
echo "FIGYELMEZTETES: GH_MIRROR_TOKEN nincs beallitva -> GitHub tukrozes kihagyva"
exit 0
fi
HDRFILE=$(mktemp)
chmod 600 "$HDRFILE"
trap 'rm -f "$HDRFILE"' EXIT
printf 'Authorization: Bearer %s\n' "$GH_MIRROR_TOKEN" > "$HDRFILE"
fetch_release() {
curl -sf -H "@${HDRFILE}" "${API}/releases/tags/${TAG}" || true
}
release_json=$(fetch_release)
if [ -z "$release_json" ] || ! echo "$release_json" | jq -e .id &>/dev/null; then
echo "FIGYELMEZTETES: GitHub release nem erheto el (${TAG}) -> kihagyva"
exit 0
fi
release_id=$(echo "$release_json" | jq -r .id)
cd "$X86"
existing_names=$(echo "$release_json" | jq -r '.assets[]? | "\(.id)\t\(.name)"' 2>/dev/null || true)
for f in *.pkg.tar.zst; do
[ -f "$f" ] || continue
pkgname=$(echo "$f" | sed -E 's/-[0-9][^-]*-[^-]*-[^-]*\.pkg\.tar\.zst$//')
[ -n "$pkgname" ] || continue
while IFS=$'\t' read -r aid aname; do
[ -n "$aid" ] || continue
aname_nosig="${aname%.sig}"
apkg=$(echo "$aname_nosig" | sed -E 's/-[0-9][^-]*-[^-]*-[^-]*\.pkg\.tar\.zst$//')
if [ "$apkg" = "$pkgname" ] && [ "$aname" != "$f" ] && [ "$aname" != "${f}.sig" ]; then
curl -sf -X DELETE -H "@${HDRFILE}" "${API}/releases/assets/${aid}" || true
echo "torolve (regi verzio): $aname"
fi
done <<< "$existing_names"
done
release_json=$(fetch_release)
if [ -z "$release_json" ]; then
echo "FIGYELMEZTETES: GitHub release ujra nem erheto el -> kihagyva"
exit 0
fi
assets_tsv=$(echo "$release_json" | jq -r '.assets[]? | "\(.id)\t\(.name)\t\(.digest // "-")"' 2>/dev/null || true)
UPLOADED=0
SKIPPED=0
for f in *; do
[ -f "$f" ] || continue
local_sha=$(sha256sum "$f" | cut -d' ' -f1)
asset_line=$(echo "$assets_tsv" | awk -F'\t' -v n="$f" '$2==n {print; exit}')
if [ -n "$asset_line" ]; then
asset_id=$(echo "$asset_line" | cut -f1)
asset_digest=$(echo "$asset_line" | cut -f3)
if [ "sha256:${local_sha}" = "$asset_digest" ]; then
SKIPPED=$((SKIPPED + 1))
continue
fi
curl -sf -X DELETE -H "@${HDRFILE}" "${API}/releases/assets/${asset_id}" || true
fi
if curl -sf -X POST -H "@${HDRFILE}" \
-H "Content-Type: application/octet-stream" \
--data-binary "@${f}" \
"${UPLOADS}/${release_id}/assets?name=${f}"; then
UPLOADED=$((UPLOADED + 1))
else
echo "HIBA: ${f} feltoltese sikertelen"
fi
done
echo "GitHub mirror kesz: ${UPLOADED} feltoltve, ${SKIPPED} valtozatlan (kihagyva)"
|