mirror of
https://github.com/AvengeMedia/DankMaterialShell.git
synced 2025-12-06 05:25:41 -05:00
107 lines
3.2 KiB
Bash
107 lines
3.2 KiB
Bash
#!/bin/bash
|
|
# Unified OBS status checker for dms packages
|
|
# Checks all platforms (Debian, OpenSUSE) and architectures (x86_64, aarch64)
|
|
# Only pulls logs if build failed
|
|
# Usage: ./distro/scripts/obs-status.sh [package-name]
|
|
#
|
|
# Examples:
|
|
# ./distro/scripts/obs-status.sh # Check all packages
|
|
# ./distro/scripts/obs-status.sh dms # Check specific package
|
|
|
|
OBS_BASE_PROJECT="home:AvengeMedia"
|
|
OBS_BASE="$HOME/.cache/osc-checkouts"
|
|
|
|
ALL_PACKAGES=(dms dms-git)
|
|
|
|
REPOS=("Debian_13" "openSUSE_Tumbleweed" "16.0")
|
|
ARCHES=("x86_64" "aarch64")
|
|
|
|
if [[ -n "$1" ]]; then
|
|
PACKAGES=("$1")
|
|
else
|
|
PACKAGES=("${ALL_PACKAGES[@]}")
|
|
fi
|
|
|
|
cd "$OBS_BASE"
|
|
|
|
for pkg in "${PACKAGES[@]}"; do
|
|
case "$pkg" in
|
|
dms)
|
|
PROJECT="$OBS_BASE_PROJECT:dms"
|
|
;;
|
|
dms-git)
|
|
PROJECT="$OBS_BASE_PROJECT:dms-git"
|
|
;;
|
|
*)
|
|
echo "Error: Unknown package '$pkg'"
|
|
continue
|
|
;;
|
|
esac
|
|
|
|
echo "=========================================="
|
|
echo "=== $pkg ==="
|
|
echo "=========================================="
|
|
|
|
# Checkout if needed
|
|
if [[ ! -d "$PROJECT/$pkg" ]]; then
|
|
osc co "$PROJECT/$pkg" 2>&1 | tail -1
|
|
fi
|
|
|
|
cd "$PROJECT/$pkg"
|
|
|
|
ALL_RESULTS=$(osc results 2>&1)
|
|
|
|
# Check each repository and architecture
|
|
FAILED_BUILDS=()
|
|
for repo in "${REPOS[@]}"; do
|
|
for arch in "${ARCHES[@]}"; do
|
|
STATUS=$(echo "$ALL_RESULTS" | grep "$repo.*$arch" | awk '{print $NF}' | head -1)
|
|
|
|
if [[ -n "$STATUS" ]]; then
|
|
# Color code status
|
|
case "$STATUS" in
|
|
succeeded)
|
|
COLOR="\033[0;32m" # Green
|
|
SYMBOL="✅"
|
|
;;
|
|
failed)
|
|
COLOR="\033[0;31m" # Red
|
|
SYMBOL="❌"
|
|
FAILED_BUILDS+=("$repo $arch")
|
|
;;
|
|
unresolvable)
|
|
COLOR="\033[0;33m" # Yellow
|
|
SYMBOL="⚠️"
|
|
;;
|
|
*)
|
|
COLOR="\033[0;37m" # White
|
|
SYMBOL="⏳"
|
|
;;
|
|
esac
|
|
echo -e " $SYMBOL $repo $arch: ${COLOR}$STATUS\033[0m"
|
|
fi
|
|
done
|
|
done
|
|
|
|
# Pull logs for failed builds
|
|
if [[ ${#FAILED_BUILDS[@]} -gt 0 ]]; then
|
|
echo ""
|
|
echo " 📋 Fetching logs for failed builds..."
|
|
for build in "${FAILED_BUILDS[@]}"; do
|
|
read -r repo arch <<< "$build"
|
|
echo ""
|
|
echo " ────────────────────────────────────────────"
|
|
echo " Build log: $repo $arch"
|
|
echo " ────────────────────────────────────────────"
|
|
osc remotebuildlog "$PROJECT" "$pkg" "$repo" "$arch" 2>&1 | tail -100
|
|
done
|
|
fi
|
|
|
|
echo ""
|
|
cd - > /dev/null
|
|
done
|
|
|
|
echo "=========================================="
|
|
echo "Status check complete!"
|
|
|