This commit is contained in:
parent
fea1198402
commit
67c01b74e9
1 changed files with 24 additions and 21 deletions
41
build.sh
41
build.sh
|
@ -12,6 +12,8 @@ readonly GREEN='\033[0;32m'
|
||||||
readonly YELLOW='\033[1;33m'
|
readonly YELLOW='\033[1;33m'
|
||||||
readonly NC='\033[0m' # No Color
|
readonly NC='\033[0m' # No Color
|
||||||
|
|
||||||
|
all_packages=()
|
||||||
|
|
||||||
trap 'echo -e "${RED}Error on line $LINENO${NC}"' ERR
|
trap 'echo -e "${RED}Error on line $LINENO${NC}"' ERR
|
||||||
|
|
||||||
. .util.sh
|
. .util.sh
|
||||||
|
@ -84,6 +86,9 @@ build() {
|
||||||
[[ "${upd}" == true ]] && update_pkg
|
[[ "${upd}" == true ]] && update_pkg
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
mapfile -t pkgnames < <(awk -F ' = ' '/^pkgname/ {print $2}' .SRCINFO)
|
||||||
|
all_packages+=("${pkgnames[@]}")
|
||||||
|
|
||||||
name=$(grep -m1 'pkgname' .SRCINFO | cut -d'=' -f2 | tr -d ' ')
|
name=$(grep -m1 'pkgname' .SRCINFO | cut -d'=' -f2 | tr -d ' ')
|
||||||
ver=$(grep -m1 'pkgver' .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 ' ')
|
rel=$(grep -m1 'pkgrel' .SRCINFO | cut -d'=' -f2 | tr -d ' ')
|
||||||
|
@ -161,26 +166,26 @@ process_directories() {
|
||||||
}
|
}
|
||||||
|
|
||||||
find_and_remove_deleted_packages() {
|
find_and_remove_deleted_packages() {
|
||||||
local last_commit del=()
|
log "INFO" "Finding removed packages"
|
||||||
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 from ${last_commit}"
|
mapfile -t repo_packages < <(
|
||||||
mapfile -t del < <(
|
find "${REPO_DIR}" -type f -name "*.pkg.tar.zst" -exec basename {} \; |
|
||||||
{
|
awk -F'-' '{
|
||||||
git --no-pager diff "${last_commit}"..HEAD aur.txt | tail -n +4 | grep -E '^-' | cut -c2-
|
name = $1;
|
||||||
git --no-pager diff --name-status "${last_commit}"..HEAD | grep -Po 'D\s+(\K.*)(?=/PKGBUILD)'
|
for (i = 2; i <= NF - 3; i++) {
|
||||||
} | sort -u
|
name = name "-" $i
|
||||||
|
}
|
||||||
|
print name
|
||||||
|
}' | sort -u
|
||||||
)
|
)
|
||||||
|
|
||||||
if [[ ${#del[@]} -gt 0 ]]; then
|
mapfile -t removed_packages < <(
|
||||||
for pkg in "${del[@]}"; do
|
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}"
|
log "INFO" "Removing package ${pkg}"
|
||||||
if ! repo-remove -s "${REPO_DIR}/nyyu.db.tar.zst" "${pkg}"; then
|
if ! repo-remove -s "${REPO_DIR}/nyyu.db.tar.zst" "${pkg}"; then
|
||||||
log "WARN" "Failed to remove ${pkg} from repo"
|
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}/"
|
log "WARN" "No files found for ${pkg} in ${REPO_DIR}/"
|
||||||
fi
|
fi
|
||||||
done
|
done
|
||||||
else
|
|
||||||
log "INFO" "No packages to remove"
|
|
||||||
fi
|
fi
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue