Fix pre-existing dep bug in issue #36.

This commit is contained in:
awalsh128 2022-07-25 20:50:58 -07:00
parent e9bcc93e33
commit c0c05ca285
2 changed files with 17 additions and 8 deletions

View file

@ -52,7 +52,7 @@ for package in ${normalized_packages}; do
manifest_main="${manifest_main}${package_name}:${package_ver},"
cached_packages="${cached_packages} ${package_name}:${package_version}"
read dep_packages < <(get_dep_packages "${package_name}")
read dep_packages < <(get_dep_packages "${package_name}") || exit 2
cached_packages="${cached_packages} $(echo ${dep_packages} | tr '\n' ' ')"
if test -z "${dep_packages}"; then

23
lib.sh
View file

@ -9,15 +9,23 @@ function normalize_package_list {
echo "${sorted}"
}
# Gets a package list of dependencies as newline delimited pairs
# <name>:<version>\n<name:version>...
# Gets a package list of dependencies as space delimited pairs with each pair colon delimited.
# <name>:<version> <name:version>...
function get_dep_packages {
echo $(apt-fast install --dry-run --yes "${1}" | \
grep "^Inst" | sort | awk '{print $2 $3}' | \
tr '(' ':' | grep -v "${1}:")
local regex="^Inst ([^ ]+) (\[[^ ]+\]\s)?\(([^ ]+)"
dep_packages=""
while read -r line; do
if [[ "${line}" =~ ${regex} ]]; then
dep_packages="${dep_packages}${BASH_REMATCH[1]}:${BASH_REMATCH[3]} "
else
log_err "Unable to parse package name and version from \"$line\""
exit 2
fi
done < <(apt-fast install --dry-run --yes "${1}" | grep "^Inst" | grep -v "^Inst ${1} " | sort)
echo "${dep_packages:0:-1}" # Removing trailing space.
}
# Split fully qualified package into name and version
# Split fully qualified package into name and version.
function get_package_name_ver {
IFS=\: read name ver <<< "${1}"
# If version not found in the fully qualified package value.
@ -28,13 +36,14 @@ function get_package_name_ver {
}
function log { echo "$(date +%H:%M:%S)" "${@}"; }
function log_err { >&2 echo "$(date +%H:%M:%S)" "${@}"; }
function log_empty_line { echo ""; }
# Writes the manifest to a specified file.
function write_manifest {
log "Writing ${1} packages manifest to ${3}..."
# 0:-1 to remove trailing comma, delimit by newline and sort
# 0:-1 to remove trailing comma, delimit by newline and sort.
echo "${2:0:-1}" | tr ',' '\n' | sort > ${3}
log "done"
}