Refactor
This commit is contained in:
16 files changed
+1650
-496
No files matched your search
+41
-73
@@ -7,30 +7,29 @@ set -e
|
||||
BUILD_ROOT=$(realpath "${BASH_SOURCE[0]%/*}/..")
|
||||
source "$BUILD_ROOT/helpers/message-helpers.sh"
|
||||
source "$BUILD_ROOT/helpers/paths.sh"
|
||||
source "$BUILD_ROOT/helpers/package-metadata.sh"
|
||||
|
||||
STATE_DIR="${OMARCHY_STATE_DIR:-/root/.state}"
|
||||
ARCH="${ARCH:-x86_64}"
|
||||
|
||||
# Ensure state directory exists
|
||||
mkdir -p "$STATE_DIR"
|
||||
|
||||
print_header "Package Version Check"
|
||||
|
||||
# Get version from repo database
|
||||
get_repo_version() {
|
||||
local pkg="$1"
|
||||
local mirror="$2"
|
||||
local repo_db="$BUILD_ROOT/pkgs.omarchy.org/$mirror/$ARCH/omarchy.db.tar.zst"
|
||||
|
||||
|
||||
if [[ -f "$repo_db" ]]; then
|
||||
local desc_file=$(tar -tf "$repo_db" 2>/dev/null | grep "^${pkg}-[0-9r].*/desc$" | head -1)
|
||||
local desc_file
|
||||
desc_file=$(tar -tf "$repo_db" 2>/dev/null | grep "^${pkg}-[0-9r].*/desc$" | head -1)
|
||||
if [[ -n "$desc_file" ]]; then
|
||||
tar -xOf "$repo_db" "$desc_file" 2>/dev/null | awk '/%VERSION%/{getline; print; exit}'
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
# Get version from PKGBUILD
|
||||
get_pkgbuild_version() {
|
||||
local pkgdir="$1"
|
||||
if [[ -f "$pkgdir/PKGBUILD" ]]; then
|
||||
@@ -38,88 +37,57 @@ get_pkgbuild_version() {
|
||||
fi
|
||||
}
|
||||
|
||||
# Check if package needs building for a mirror
|
||||
check_package() {
|
||||
local pkg="$1"
|
||||
local pkgdir="$2"
|
||||
local mirror="$3"
|
||||
|
||||
local pkgbuild_version=$(get_pkgbuild_version "$pkgdir")
|
||||
local repo_version=$(get_repo_version "$pkg" "$mirror")
|
||||
|
||||
|
||||
local pkgbuild_version repo_version
|
||||
pkgbuild_version=$(get_pkgbuild_version "$pkgdir")
|
||||
repo_version=$(get_repo_version "$pkg" "$mirror")
|
||||
|
||||
if [[ -z "$pkgbuild_version" ]]; then
|
||||
return 1 # Can't read version, skip
|
||||
return 1
|
||||
fi
|
||||
|
||||
|
||||
if [[ "$pkgbuild_version" != "$repo_version" ]]; then
|
||||
return 0 # Needs building
|
||||
return 0
|
||||
fi
|
||||
|
||||
return 1 # Up to date
|
||||
|
||||
return 1
|
||||
}
|
||||
|
||||
edge_needs_build=false
|
||||
stable_needs_build=false
|
||||
edge_packages=()
|
||||
stable_packages=()
|
||||
check_mirror() {
|
||||
local mirror="$1"
|
||||
local state_file="$STATE_DIR/.sync-needed-$mirror"
|
||||
local needs_build=false
|
||||
local packages=()
|
||||
|
||||
print_info "Checking edge packages..."
|
||||
print_info "Checking $mirror packages..."
|
||||
|
||||
# Check edge/ packages -> only affects edge
|
||||
for pkgdir in "$BUILD_ROOT/pkgbuilds/edge"/*/; do
|
||||
[[ ! -d "$pkgdir" ]] && continue
|
||||
pkg=$(basename "$pkgdir")
|
||||
[[ ! -f "$pkgdir/PKGBUILD" ]] && continue
|
||||
|
||||
if check_package "$pkg" "$pkgdir" "edge"; then
|
||||
edge_needs_build=true
|
||||
edge_packages+=("$pkg")
|
||||
while IFS= read -r pkg; do
|
||||
local pkgdir="$PKGBUILDS_DIR/$pkg"
|
||||
if check_package "$pkg" "$pkgdir" "$mirror"; then
|
||||
needs_build=true
|
||||
packages+=("$pkg")
|
||||
fi
|
||||
done < <(packages_for_mirror "$mirror")
|
||||
|
||||
echo ""
|
||||
|
||||
if [[ "$needs_build" == true ]]; then
|
||||
touch "$state_file"
|
||||
print_success "${mirror^} needs building (${#packages[@]} packages)"
|
||||
print_info "Packages: ${packages[*]}"
|
||||
print_info "State file created: $state_file"
|
||||
else
|
||||
print_info "${mirror^} is up to date"
|
||||
fi
|
||||
done
|
||||
|
||||
print_info "Checking shared packages..."
|
||||
echo ""
|
||||
}
|
||||
|
||||
# Check shared/ packages -> affects BOTH edge and stable
|
||||
for pkgdir in "$BUILD_ROOT/pkgbuilds/shared"/*/; do
|
||||
[[ ! -d "$pkgdir" ]] && continue
|
||||
pkg=$(basename "$pkgdir")
|
||||
[[ ! -f "$pkgdir/PKGBUILD" ]] && continue
|
||||
|
||||
# Check against edge
|
||||
if check_package "$pkg" "$pkgdir" "edge"; then
|
||||
edge_needs_build=true
|
||||
edge_packages+=("$pkg")
|
||||
fi
|
||||
|
||||
# Check against stable
|
||||
if check_package "$pkg" "$pkgdir" "stable"; then
|
||||
stable_needs_build=true
|
||||
stable_packages+=("$pkg")
|
||||
fi
|
||||
done
|
||||
check_mirror edge
|
||||
check_mirror stable
|
||||
|
||||
echo ""
|
||||
|
||||
# Drop state files as needed
|
||||
if [[ "$edge_needs_build" == true ]]; then
|
||||
touch "$STATE_DIR/.sync-needed-edge"
|
||||
print_success "Edge needs building (${#edge_packages[@]} packages)"
|
||||
print_info "Packages: ${edge_packages[*]}"
|
||||
print_info "State file created: $STATE_DIR/.sync-needed-edge"
|
||||
else
|
||||
print_info "Edge is up to date"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
|
||||
if [[ "$stable_needs_build" == true ]]; then
|
||||
touch "$STATE_DIR/.sync-needed-stable"
|
||||
print_success "Stable needs building (${#stable_packages[@]} packages)"
|
||||
print_info "Packages: ${stable_packages[*]}"
|
||||
print_info "State file created: $STATE_DIR/.sync-needed-stable"
|
||||
else
|
||||
print_info "Stable is up to date"
|
||||
fi
|
||||
|
||||
echo ""
|
||||
print_success "Version check complete!"
|
||||
Reference in new issue
Block a user