zfs-pacman-hook/pacman-zfs-snapshot.sh

62 lines
1.7 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 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
#for pkg in "${!important_pkgs_in_transaction[@]}"; do
# printf -- 'Array item '"'"'%s'"'"' equals '"'"'%s'"'"'\n' "${pkg}" "${important_pkgs_in_transaction[${pkg}]}"
#done
}
main "${pkgs[@]}"