#!/bin/bash # Include library. script_dir="$(dirname -- "$(realpath -- "${0}")")" source "${script_dir}/lib.sh" # Directory that holds the cached packages. cache_dir="${1}" # Version of the cache to create or load. version="${2}" # List of the packages to use. input_packages="${@:3}" # Trim commas, excess spaces, and sort. packages="$(normalize_package_list "${input_packages}")" # Create cache directory so artifacts can be saved. mkdir -p ${cache_dir} echo -n "Validating action arguments (version='${version}', packages='${packages}')..."; if grep -q " " <<< "${cache_version}"; then echo "aborted." echo "Version value '${version}' cannot contain spaces." >&2 exit 1 fi # Is length of string zero? if test -z "${packages}"; then echo "aborted." echo "Packages argument cannot be empty." >&2 exit 2 fi echo "done." versioned_packages="" echo -n "Verifying packages..." for package in ${packages}; do if test ! "$(apt show "${package}")"; then echo "aborted." echo "Package '${package}' not found." >&2 exit 3 fi versioned_packages=""${versioned_packages}" "$(get_package_name_ver "${package}")"" done echo "done." # Abort on any failure at this point. set -e echo "Creating cache key..." # TODO Can we prove this will happen again? normalized_versioned_packages="$(normalize_package_list "${versioned_packages}")" echo "- Normalized package list is '${normalized_versioned_packages}'." value="$(echo "${normalized_versioned_packages} @ ${cache_version}")" echo "- Value to hash is '${value}'." key="$(echo "${value}" | md5sum | /bin/cut -f1 -d' ')" echo "- Value hashed as '${key}'." echo "done." key_filepath="${cache_dir}/cache_key.md5" echo ${key} > ${key_filepath} echo "Hash value written to ${key_filepath}"