feat: filter cleanup by package names
This commit is contained in:
+37
-1
@@ -10,6 +10,8 @@ fail() {
|
||||
exit 1
|
||||
}
|
||||
|
||||
declare -A TARGET_PACKAGES=()
|
||||
|
||||
resolve_token() {
|
||||
log "Trying token from RUNNER_TOKEN"
|
||||
|
||||
@@ -36,6 +38,30 @@ resolve_keep_versions() {
|
||||
printf '%s' "${raw_value}"
|
||||
}
|
||||
|
||||
resolve_package_names() {
|
||||
local raw_value="${INPUT_PACKAGE_NAMES:-}"
|
||||
local normalized package_name
|
||||
local -a package_name_list
|
||||
|
||||
if [[ -z "${raw_value}" ]]; then
|
||||
fail "Missing PACKAGE_NAMES"
|
||||
fi
|
||||
|
||||
normalized="${raw_value//$'\n'/,}"
|
||||
|
||||
IFS=',' read -r -a package_name_list <<< "${normalized}"
|
||||
for package_name in "${package_name_list[@]}"; do
|
||||
package_name="${package_name#"${package_name%%[![:space:]]*}"}"
|
||||
package_name="${package_name%"${package_name##*[![:space:]]}"}"
|
||||
[[ -n "${package_name}" ]] || continue
|
||||
TARGET_PACKAGES["${package_name}"]=1
|
||||
done
|
||||
|
||||
if (( ${#TARGET_PACKAGES[@]} == 0 )); then
|
||||
fail "Missing PACKAGE_NAMES"
|
||||
fi
|
||||
}
|
||||
|
||||
init_repo_context() {
|
||||
local repository="${GITEA_REPOSITORY:-}"
|
||||
|
||||
@@ -142,12 +168,17 @@ collect_package_candidates() {
|
||||
|
||||
while IFS= read -r group_json; do
|
||||
package_name="$(jq -r '.[0].name' <<<"${group_json}")"
|
||||
|
||||
if [[ -z "${TARGET_PACKAGES["$package_name"]+x}" ]]; then
|
||||
continue
|
||||
fi
|
||||
|
||||
total_versions="$(jq 'length' <<<"${group_json}")"
|
||||
|
||||
PACKAGE_COUNT=$((PACKAGE_COUNT + 1))
|
||||
TOTAL_VERSION_COUNT=$((TOTAL_VERSION_COUNT + total_versions))
|
||||
|
||||
log "Package ${package_name}: total_versions=${total_versions} keep_versions=${keep_versions}"
|
||||
log "Package ${package_name}: total_versions=${total_versions} keep_count=${keep_versions}"
|
||||
log "Package ${package_name} versions (oldest -> newest):"
|
||||
while IFS=$'\t' read -r version created_at; do
|
||||
[[ -z "${version}" ]] && continue
|
||||
@@ -219,6 +250,8 @@ main() {
|
||||
init_repo_context
|
||||
keep_versions="$(resolve_keep_versions)"
|
||||
log "keep_count=${keep_versions}"
|
||||
resolve_package_names
|
||||
log "package_names=${INPUT_PACKAGE_NAMES}"
|
||||
log "Token source resolved successfully"
|
||||
|
||||
CANDIDATES_FILE="$(mktemp)"
|
||||
@@ -230,6 +263,9 @@ main() {
|
||||
trap 'rm -f "${CANDIDATES_FILE}"' EXIT
|
||||
|
||||
collect_package_candidates
|
||||
if (( PACKAGE_COUNT == 0 )); then
|
||||
log "No matching packages found for requested package_names"
|
||||
fi
|
||||
process_candidates
|
||||
log "Stage 4 complete"
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user