tool=${tool%/*}
. "$tool"/lib/rule.sh
. "$tool"/etc/vm.sh
+export TRACE=1
rule_help () { # SYNTAX: [--hidden]
local hidden; [ ${1:+set} ] || hidden=set
tool=$(cd "$tool"; cd -)
sudo ln -fns "$tool"/vm_hosted /usr/local/sbin/
sudo ln -fns "$tool"/vm_hosted /usr/local/sbin/vm
+ sudo install -m 770 /dev/stdin .git/hooks/post-update <<-EOF
+ #!/bin/sh -efux
+ case \$1 in
+ (refs/remotes/master)
+ cd ..
+ git --git-dir=\$PWD/.git checkout -f -B master remotes/master
+ git --git-dir=\$PWD/.git clean -f -d -x
+ ;;
+ esac
+ EOF
)
}
rule_git_reset () {
/etc/apache2/site.d/"$site" \
/home/www/etc/apache2/"$site"
test -e /home/www/pub/"$site" ||
- sudo install -d -m 770 -o www."$site" -g www."$site" \
+ sudo install -d -m 2770 -o www."$site" -g www."$site" \
/home/www/pub/"$site"
getent passwd www."$site" >/dev/null ||
sudo adduser \
rmdir "$home"/etc/gitolite/"$d"
done
rule apt_get_install gitweb highlight
- #sudo sv restart spawn-fcgi.git.80.git.heureux-cyclage.org
+ #sudo sv restart fcgi.git.80.git.heureux-cyclage.org
#sudo sv restart git-daemon.git.9418
}
rule_locales_configure () {
sudo install -m 644 -o root -g root \
"$tool"/etc/mysql/my.cnf \
/etc/mysql/my.cnf
- sudo install -d -m 750 -o mysql -g mysql \
- /home/mysql
- sudo service mysql restart
+ if test ! -d /home/mysql; then
+ sudo install -d -m 750 -o mysql -g mysql \
+ /home/mysql
+ sudo -u mysql mysql_install_db --no-defaults --datadir=/home/mysql/
+ fi
}
rule_network_configure () {
sudo install -m 644 -o root -g root /dev/stdin /etc/hostname <<-EOF
sudo install -d -m 750 -o www -g www \
/home/www/etc
sudo install -d -m 1771 -o www-data -g www-data \
- /home/www/pub \
+ /home/www/pub
sudo install -d -m 1771 -o log.www -g log.www \
/home/www/log
}
abuse: root
admin: root
contact: root
+ mailer-daemon: root
postmaster: root
root: $(getent group sudo | cut -f 4 -d : | tr , ' ')
EOF
rule_runit_configure () {
rule apt_get_install runit
local -; set +f
- rm -f /etc/service/*
- # NOTE: runsvdir éteindra les services qui n'apparaîtront plus ici.
- for sv in "$tool"/etc/sv/*
- do sv=${sv#"$tool"/etc/sv/}
+ for sv in ${1-/etc/service/*}
+ # NOTE: stoppe les services en retenant leur status de départ
+ do sv=$(basename "$sv")
+ local sv_hash=$(printf %s "$sv" | sha1sum | cut -f 1 -d ' ')
+ local sv_status
+ IFS= read -r sv_status_$sv_hash <<-EOF
+ $(sv status "$sv")
+ EOF
+ rm -f /etc/service/"$sv"
+ done
+ for sv in ${1-"$tool"/etc/sv/*}
+ # NOTE: configure et (re-)démarre les services
+ do sv=$(basename "$sv")
+ local sv_hash=$(printf %s "$sv" | sha1sum | cut -f 1 -d ' ')
sudo install -d -m 770 -o root -g root \
/etc/sv/"$sv"
sudo install -m 770 -o root -g root \
"$tool"/etc/sv/"$sv"/log/run \
/etc/sv/"$sv"/log/run
fi
- if test ! -x "$tool"/etc/sv/"$sv"/configure ||
- "$tool"/etc/sv/"$sv"/configure
- then
- ln -fns ../sv/"$sv" /etc/service/"$sv"
- sv restart "$sv"
- fi
+ test ! -x "$tool"/etc/sv/"$sv"/configure ||
+ "$tool"/etc/sv/"$sv"/configure
+ ln -fns ../sv/"$sv" /etc/service/"$sv"
+ eval local sv_status=\"\${sv_status_$sv_hash-}\"
+ case $sv_status in
+ ("") sv start "$sv";;
+ (run:*) sv restart "$sv";;
+ esac
done
}
rule_ssh_configure () {