chore(ci): rework removed packages
Some checks failed
ci/woodpecker/push/woodpecker Pipeline failed

This commit is contained in:
nyyu 2025-04-09 09:27:40 +02:00
parent fea1198402
commit 67c01b74e9

View file

@ -12,6 +12,8 @@ readonly GREEN='\033[0;32m'
readonly YELLOW='\033[1;33m'
readonly NC='\033[0m' # No Color
all_packages=()
trap 'echo -e "${RED}Error on line $LINENO${NC}"' ERR
. .util.sh
@ -84,6 +86,9 @@ build() {
[[ "${upd}" == true ]] && update_pkg
fi
mapfile -t pkgnames < <(awk -F ' = ' '/^pkgname/ {print $2}' .SRCINFO)
all_packages+=("${pkgnames[@]}")
name=$(grep -m1 'pkgname' .SRCINFO | cut -d'=' -f2 | tr -d ' ')
ver=$(grep -m1 'pkgver' .SRCINFO | cut -d'=' -f2 | tr -d ' ')
rel=$(grep -m1 'pkgrel' .SRCINFO | cut -d'=' -f2 | tr -d ' ')
@ -161,26 +166,26 @@ process_directories() {
}
find_and_remove_deleted_packages() {
local last_commit del=()
if git cat-file -e "${CI_PREV_COMMIT_SHA:-}" 2>/dev/null; then
last_commit=${CI_PREV_COMMIT_SHA}
else
last_commit=$(git --no-pager log --oneline | grep -v 'CI SKIP' | cut -d' ' -f1 | sed -n '5p') || {
log "ERROR" "Failed to determine last commit"
return 1
}
fi
log "INFO" "Finding removed packages"
log "INFO" "Finding removed packages from ${last_commit}"
mapfile -t del < <(
{
git --no-pager diff "${last_commit}"..HEAD aur.txt | tail -n +4 | grep -E '^-' | cut -c2-
git --no-pager diff --name-status "${last_commit}"..HEAD | grep -Po 'D\s+(\K.*)(?=/PKGBUILD)'
} | sort -u
mapfile -t repo_packages < <(
find "${REPO_DIR}" -type f -name "*.pkg.tar.zst" -exec basename {} \; |
awk -F'-' '{
name = $1;
for (i = 2; i <= NF - 3; i++) {
name = name "-" $i
}
print name
}' | sort -u
)
if [[ ${#del[@]} -gt 0 ]]; then
for pkg in "${del[@]}"; do
mapfile -t removed_packages < <(
comm -23 <(printf "%s\n" "${repo_packages[@]}" | sort) <(printf "%s\n" "${all_packages[@]}" | sort)
)
log "INFO" "Removed packages: ${removed_packages[*]}"
if [[ ${#removed_packages[@]} -gt 0 ]]; then
for pkg in "${removed_packages[@]}"; do
log "INFO" "Removing package ${pkg}"
if ! repo-remove -s "${REPO_DIR}/nyyu.db.tar.zst" "${pkg}"; then
log "WARN" "Failed to remove ${pkg} from repo"
@ -189,8 +194,6 @@ find_and_remove_deleted_packages() {
log "WARN" "No files found for ${pkg} in ${REPO_DIR}/"
fi
done
else
log "INFO" "No packages to remove"
fi
}