87 lines
2.6 KiB
Bash
Executable File
87 lines
2.6 KiB
Bash
Executable File
#!/bin/bash
|
|
|
|
declare -a pkgs
|
|
while read pkg; do
|
|
pkgs+=("${pkg}")
|
|
done
|
|
|
|
declare operation
|
|
operation="${1}"
|
|
|
|
declare conf_file
|
|
conf_file='/etc/pacman-zfs-snapshot.conf'
|
|
|
|
declare important_names snaps_trivial_keep snaps_important_keep snaps_trivial_suffix snaps_important_suffix
|
|
if [[ -r "${conf_file}" ]]; then
|
|
source "${conf_file}"
|
|
fi
|
|
|
|
if [[ ! "${important_names}" ]]; then important_names='linux'; fi
|
|
if [[ ! "${snaps_trivial_keep}" ]]; then snaps_trivial_keep='5'; fi
|
|
if [[ ! "${snaps_important_keep}" ]]; then snaps_important_keep='5'; fi
|
|
if [[ ! "${snaps_trivial_suffix}" ]]; then snaps_trivial_suffix='trv'; fi
|
|
if [[ ! "${snaps_important_suffix}" ]]; then snaps_important_suffix='imp'; fi
|
|
if [[ ! "${pkgs_list_max_length}" ]]; then pkgs_list_max_length='24'; fi
|
|
|
|
function split_pkgs_by_importance () {
|
|
local pkgs_in_transaction
|
|
pkgs_in_transaction=("${@}")
|
|
for pkg in "${pkgs_in_transaction[@]}"; do
|
|
if grep -Piq -- '^'"${important_names}"'$' <<<"${pkg}"; then
|
|
important_pkgs_in_transaction+=("${pkg}")
|
|
else
|
|
trivial_pkgs_in_transaction+=("${pkg}")
|
|
fi
|
|
done
|
|
}
|
|
|
|
function set_severity () {
|
|
if [[ "${#important_pkgs_in_transaction[@]}" -ge '1' ]]; then
|
|
severity='imp'
|
|
else
|
|
severity='trv'
|
|
fi
|
|
}
|
|
|
|
function write_pkg_list_oneline () {
|
|
local unabridged_pkg_list_oneline
|
|
if [[ "${severity}" == 'imp' ]]; then
|
|
for pkg in "${important_pkgs_in_transaction[@]}"; do
|
|
if [[ "${unabridged_pkg_list_oneline}" ]]; then
|
|
unabridged_pkg_list_oneline="${unabridged_pkg_list_oneline}"','"${pkg}"
|
|
else
|
|
unabridged_pkg_list_oneline="${pkg}"
|
|
fi
|
|
done
|
|
fi
|
|
if [[ "${#trivial_pkgs_in_transaction[@]}" -ge '1' ]]; then
|
|
for pkg in "${trivial_pkgs_in_transaction[@]}"; do
|
|
if [[ "${unabridged_pkg_list_oneline}" ]]; then
|
|
unabridged_pkg_list_oneline="${unabridged_pkg_list_oneline}"','"${pkg}"
|
|
else
|
|
unabridged_pkg_list_oneline="${pkg}"
|
|
fi
|
|
done
|
|
fi
|
|
}
|
|
|
|
function main () {
|
|
local pkgs_in_transaction
|
|
pkgs_in_transaction=("${@}")
|
|
|
|
declare -a important_pkgs_in_transaction trivial_pkgs_in_transaction
|
|
split_pkgs_by_importance "${pkgs_in_transaction[@]}"
|
|
|
|
local severity
|
|
set_severity
|
|
|
|
local pkg_list_oneline
|
|
write_pkg_list_oneline
|
|
|
|
#for pkg in "${!important_pkgs_in_transaction[@]}"; do
|
|
# printf -- 'Array item '"'"'%s'"'"' equals '"'"'%s'"'"'\n' "${pkg}" "${important_pkgs_in_transaction[${pkg}]}"
|
|
#done
|
|
}
|
|
|
|
main "${pkgs[@]}"
|