diff --git a/pacman-zfs-snapshot.sh b/pacman-zfs-snapshot.sh index f665d40..0bf380d 100755 --- a/pacman-zfs-snapshot.sh +++ b/pacman-zfs-snapshot.sh @@ -106,6 +106,36 @@ function write_pkg_list_oneline () { fi } +function find_max_dataset_name_length () { + local longest_op_suffix op_suffix_string + longest_op_suffix='0' + for op_suffix in "${snap_op_installation_suffix}" "${snap_op_remove_suffix}" "${snap_op_upgrade_suffix}"; do + if [[ "${#op_suffix}" -gt "${longest_op_suffix}" ]]; then + longest_op_suffix="${#op_suffix}" + fi + done + op_suffix_string="$(head -c "${longest_op_suffix}" '/dev/zero' | tr '\0' '_')" + + local longest_sev_suffix sev_suffix_string + longest_sev_suffix='0' + for sev_suffix in "${snaps_trivial_suffix}" "${snaps_important_suffix}"; do + if [[ "${#sev_suffix}" -gt "${longest_sev_suffix}" ]]; then + longest_sev_suffix="${#sev_suffix}" + fi + done + sev_suffix_string="$(head -c "${longest_sev_suffix}" '/dev/zero' | tr '\0' '_')" + + local max_dataset_name_length example_date_string dataset_name_no_pkgs + max_dataset_name_length='0' + example_date_string="$(date +"${snap_date_format}")" + for dataset in "${snappable_datasets[@]}"; do + dataset_name_no_pkgs="${dataset}"'@'"${snap_name_prefix}${snap_field_separator}${example_date_string}${snap_field_separator}"'op:'"${op_suffix_string}${snap_field_separator}"'sev:'"${sev_suffix_string}${snap_field_separator}"'pkgs:' + if [[ "${#dataset_name_no_pkgs}" -gt "${max_dataset_name_length}" ]]; then + max_dataset_name_length="${#dataset_name_no_pkgs}" + fi + done +} + function main () { local pkgs_in_transaction pkgs_in_transaction=("${@}") @@ -131,6 +161,9 @@ function main () { local pkg_list_oneline write_pkg_list_oneline + local max_dataset_name_length + find_max_dataset_name_length + #for pkg in "${!important_pkgs_in_transaction[@]}"; do # printf -- 'Array item '"'"'%s'"'"' equals '"'"'%s'"'"'\n' "${pkg}" "${important_pkgs_in_transaction[${pkg}]}" #done