Première tentative de support de fichiers de configuration Debian.
[auf-git-etc.git] / debian / postinst
1 #!/bin/sh
2 # postinst script for auf-git-etc
3 #
4 # see: dh_installdeb(1)
5
6 set -e
7
8 # XXX: debogage, à supprimer avant release
9 echo "==> postinst($@) - `date`" >> /tmp/auf-git-etc.debug
10 ls -la /etc/auf-git-etc >> /tmp/auf-git-etc.debug
11
12 # summary of how this script can be called:
13 #        * <postinst> `configure' <most-recently-configured-version>
14 #        * <old-postinst> `abort-upgrade' <new version>
15 #        * <conflictor's-postinst> `abort-remove' `in-favour' <package>
16 #          <new-version>
17 #        * <postinst> `abort-remove'
18 #        * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
19 #          <failed-install-package> <version> `removing'
20 #          <conflicting-package> <version>
21 # for details, see http://www.debian.org/doc/debian-policy/ or
22 # the debian-policy package
23
24
25 case "$1" in
26     configure)
27
28         # on ajoute de la souplesse dans /etc/profile
29         # XXX: pas vraiment spécifique à ce paquet... en attendant Lenny !
30         if ! grep -q '/etc/profile\.d' /etc/profile; then
31             sed -i -e '/^$/{r /proc/self/fd/0' -e ':l;n;b l}' \
32                 /etc/profile << __EOF__
33 if [ -d /etc/profile.d ]; then
34   for i in /etc/profile.d/*.sh; do
35     if [ -r \$i ]; then
36       . \$i
37     fi
38   done
39   unset i
40 fi
41
42 __EOF__
43         fi
44
45         # gestion transparente de GIT via sudo
46         if test -f /etc/sudoers; then
47             # on conserve l'environnement GIT pendant un sudo
48             if ! grep -q "env_keep.*GIT" /etc/sudoers; then
49                 sed -i '/^$/{s//Defaults env_keep += "GIT_COMMITTER_NAME GIT_COMMITTER_EMAIL GIT_AUTHOR_NAME GIT_AUTHOR_EMAIL"\n/;:l;n;b l}' /etc/sudoers
50             fi
51             # on autorise le groupe admin à demander le statut GIT
52             if test -f /etc/sudoers && ! grep -q '^%admin.*git status' /etc/sudoers; then
53                 echo '%admin ALL=(ALL) NOPASSWD: /usr/bin/git status -a' >> /etc/sudoers
54             fi
55         fi
56
57         # on vérifie la présence d'un existant
58         if [ -d /.git ]; then
59             # est-il à notre norme ?
60             if [ "`readlink -f /.git`" != "/var/lib/git/root" ]; then
61                 echo ""
62                 echo "ATTENTION : un /.git existe mais ne pointe pas sur /var/lib/git/root !"
63                 echo "ATTENTION : vous avez pris de l'avance, ce sera à vous de gérer ça... ;-)"
64                 echo ""
65             fi
66         # on vérifie la présence d'un existant
67         elif [ -d /var/lib/git/root ]; then
68             echo ""
69             echo "ATTENTION : un /var/lib/git/root existe mais il manque le lien dans /.git !"
70             echo "ATTENTION : vous pouvez le réinstaller avec : ln -s /var/lib/git/root /.git"
71             echo ""
72         # on crée le dépôt GIT global à ce système
73         else
74             cd /
75             git init-db
76             # git >= 1.5
77             #git config status.relativePaths false
78             chmod 0700 /.git
79             mkdir -p /var/lib/git
80             mv /.git /var/lib/git/root
81             ln -s /var/lib/git/root /.git
82             ln -s -f /etc/auf-git-etc/exclude /.git/info/
83             ln -s -f /etc/auf-git-etc/post-commit /.git/hooks/
84             git add etc usr/local
85             git add boot/grub/menu.lst || true # absent des serveurs virtuels
86             git add var/chroot/bind/etc || true # absent des serveurs non DNS
87             # TODO: ajouter -q quand on sera en git ≥ 1.5 (Debian "Lenny")
88             git commit -m "Mise en route du suivi de /etc et /usr/local." \
89                 --author "Installation auf-git-etc <root@apt.auf.org>"
90         fi
91
92     ;;
93
94     abort-upgrade|abort-remove|abort-deconfigure)
95     ;;
96
97     *)
98         echo "postinst called with unknown argument \`$1'" >&2
99         exit 1
100     ;;
101 esac
102
103 # dh_installdeb will replace this with shell code automatically
104 # generated by other debhelper scripts.
105
106 #DEBHELPER#
107
108 exit 0