feat(script): Limit length of package name list (#1)

This commit is contained in:
hygienic-books 2023-03-06 02:07:54 +01:00
parent 7747e9bdc3
commit e7c913c4db

View File

@ -166,6 +166,31 @@ function find_max_dataset_name_length () {
fi fi
} }
function trim_pkg_list_oneline () {
local available_pkg_list_length
available_pkg_list_length="$((${max_zfs_snapshot_name_length} - ${max_dataset_name_length}))"
if [[ "${available_pkg_list_length}" -lt "{pkgs_list_max_length}" ]]; then
# If we have fewer characters available than the user wants limit
# package list length
pkgs_list_max_length="${available_pkg_list_length}"
fi
local shorter_pkg_list
shorter_pkg_list="${pkg_list_oneline}"
while [[ "${#shorter_pkg_list}" -gt "${pkgs_list_max_length}" ]]; do
shorter_pkg_list="${shorter_pkg_list%,*}"
if ! grep -Piq ',' <<<"${shorter_pkg_list}"; then
# Only one package remains in package list, no need to continue
break
fi
done
if [[ "${#shorter_pkg_list}" -gt "${pkgs_list_max_length}" ]]; do
# If this is still too long we empty the package list
shorter_pkg_list=''
done
trimmed_pkg_list_oneline="${shorter_pkg_list}"
}
function main () { function main () {
local pkgs_in_transaction local pkgs_in_transaction
pkgs_in_transaction=("${@}") pkgs_in_transaction=("${@}")
@ -191,12 +216,12 @@ function main () {
local pkg_list_oneline local pkg_list_oneline
write_pkg_list_oneline write_pkg_list_oneline
local max_dataset_name_length local max_zfs_snapshot_name_length max_dataset_name_length
max_zfs_snapshot_name_length='255'
find_max_dataset_name_length find_max_dataset_name_length
#for pkg in "${!important_pkgs_in_transaction[@]}"; do local trimmed_pkg_list_oneline
# printf -- 'Array item '"'"'%s'"'"' equals '"'"'%s'"'"'\n' "${pkg}" "${important_pkgs_in_transaction[${pkg}]}" trim_pkg_list_oneline
#done
} }
main "${pkgs[@]}" main "${pkgs[@]}"