diff --git a/.gitignore b/.gitignore index 94851d6..87e11ec 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,3 @@ src/cmd/apt_query/apt_query* -*.log \ No newline at end of file +apt_query* +*.log diff --git a/install_and_cache_pkgs.sh b/install_and_cache_pkgs.sh index 1a544ad..c310b0f 100755 --- a/install_and_cache_pkgs.sh +++ b/install_and_cache_pkgs.sh @@ -42,12 +42,7 @@ if [ -n "${add_repository}" ]; then fi log "Updating APT package list..." -if [[ -z "$(find -H /var/lib/apt/lists -maxdepth 0 -mmin -5)" ]]; then - sudo apt-fast update > /dev/null - log "done" -else - log "skipped (fresh within at least 5 minutes)" -fi +update_apt_lists_if_stale log_empty_line diff --git a/lib.sh b/lib.sh index 755d939..71a7b58 100755 --- a/lib.sh +++ b/lib.sh @@ -135,6 +135,34 @@ function get_tar_relpath { fi } +############################################################################### +# Updates APT package lists if they are stale (modified more than 5 minutes ago). +# This ensures compatibility with environments like nektos/act where package lists +# may be empty or stale. Only runs when ACT environment variable is set (nektos/act) +# to avoid slowing down normal GitHub Actions runs. +# Arguments: +# None +# Returns: +# None +############################################################################### +function update_apt_lists_if_stale { + # Only check for stale package lists when running in nektos/act + # GitHub Actions runners have fresh package lists, so skip this overhead + if [ "${ACT}" = "true" ]; then + if [[ -z "$(find -H /var/lib/apt/lists -maxdepth 0 -mmin -5 2>/dev/null)" ]]; then + log "APT package lists are stale, updating..." + if command -v apt-fast > /dev/null 2>&1; then + sudo apt-fast update > /dev/null 2>&1 || sudo apt update > /dev/null 2>&1 || true + else + sudo apt update > /dev/null 2>&1 || true + fi + log "APT package lists updated" + else + log "APT package lists are fresh (within 5 minutes), skipping update" + fi + fi +} + function log { echo "${@}"; } function log_err { >&2 echo "${@}"; } diff --git a/pre_cache_action.sh b/pre_cache_action.sh index 5cb64cb..105135f 100755 --- a/pre_cache_action.sh +++ b/pre_cache_action.sh @@ -32,6 +32,10 @@ input_packages="${@:6}" # Trim commas, excess spaces, and sort. log "Normalizing package list..." + +# Ensure APT package lists are updated if stale (for nektos/act compatibility) +update_apt_lists_if_stale + packages="$(get_normalized_package_list "${input_packages}")" log "done"