commit c9adf2ab70a2a6e3379bcd454d90d0f86f9ec222 parent e7b893790bacda1ea974a83ce6fd8cff739b4e90 Author: Jan Pobrislo <ccx@webprojekty.cz> Date: Fri, 27 Jun 2014 13:02:28 +0200 config-protect Diffstat:
| M | zsh-functions/confz_postgresql_init | | | 37 | ++++++++++++++++++++++++++++++++++++- |
1 file changed, 36 insertions(+), 1 deletion(-)
diff --git a/zsh-functions/confz_postgresql_init b/zsh-functions/confz_postgresql_init @@ -4,6 +4,32 @@ # confz functions for PostgreSQL # +config-protect-mv() { + local n dst base + if [[ -d $2 ]]; then + dst=${2%/}/$1:t + else + dst=$2 + fi + + if ! [[ -e $dst ]]; then + mv $1 $dst + return $? + fi + + n=0 + base=$dst:t + dst="$dst:h/$(printf "._cfg%04d_%s" $n $base)" + + while [[ -e $dst ]]; do + n=$[ $n + 1 ] + dst="$dst:h/$(printf "._cfg%04d_%s" $n $base)" + (( $n > 9999 )) && die "can not config-protect $dst:t/$base" + done + + mv $1 $dst +} + confz_postgresql_cluster_check() { checkvars data_dir defvar owner postgres @@ -20,7 +46,16 @@ confz_postgresql_cluster_do() { chown -Rf $vars[owner]: $vars[data_dir] || return $? chmod 0700 $vars[data_dir] || return $? su $vars[owner] -c "$vars[initdb] -L ${(qqq)vars[locale]} -D ${(qqq)vars[data_dir]} $vars[initdb_opts]" || return $? - [[ $vars[data_dir] == $vars[pgdata] ]] || mv $vars[data_dir]/*.conf $vars[pgdata]/ + + local cfg + + if ! [[ $vars[data_dir] == $vars[pgdata] ]]; then + for cfg in $vars[data_dir]/*.conf(N); do + config-protect-mv $cfg $vars[pgdata]/ + done + fi + + return 0 } confz_postgresql_cluster_slot_check() {