* Annulation du suivi du dpkg.log : trop lourd de cette façon.
[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 # summary of how this script can be called:
9 #        * <postinst> `configure' <most-recently-configured-version>
10 #        * <old-postinst> `abort-upgrade' <new version>
11 #        * <conflictor's-postinst> `abort-remove' `in-favour' <package>
12 #          <new-version>
13 #        * <postinst> `abort-remove'
14 #        * <deconfigured's-postinst> `abort-deconfigure' `in-favour'
15 #          <failed-install-package> <version> `removing'
16 #          <conflicting-package> <version>
17 # for details, see http://www.debian.org/doc/debian-policy/ or
18 # the debian-policy package
19
20
21 case "$1" in
22     configure)
23
24         # on ajoute de la souplesse dans /etc/profile
25         # XXX: pas vraiment spécifique à ce paquet... en attendant Lenny !
26         if ! grep -q '/etc/profile\.d' /etc/profile; then
27             sed -i -e '/^$/{r /proc/self/fd/0' -e ':l;n;b l}' \
28                 /etc/profile << __EOF__
29 if [ -d /etc/profile.d ]; then
30   for i in /etc/profile.d/*.sh; do
31     if [ -r \$i ]; then
32       . \$i
33     fi
34   done
35   unset i
36 fi
37
38 __EOF__
39         fi
40
41         # gestion transparente de GIT via sudo
42         if test -f /etc/sudoers; then
43             # on conserve l'environnement GIT pendant un sudo
44             if ! grep -q "env_keep.*GIT" /etc/sudoers; then
45                 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
46             fi
47             # on autorise le groupe admin à demander le statut GIT
48             if test -f /etc/sudoers && ! grep -q '^%admin.*git status' /etc/sudoers; then
49                 echo '%admin ALL=(ALL) NOPASSWD: /usr/bin/git status -a' >> /etc/sudoers
50             fi
51         fi
52
53         # on vérifie la présence d'un existant
54         if [ -d /.git ]; then
55             # est-il à notre norme ?
56             if [ "`readlink -f /.git`" != "/var/lib/git/root" ]; then
57                 echo ""
58                 echo "ATTENTION : un /.git existe mais ne pointe pas sur /var/lib/git/root !"
59                 echo "ATTENTION : vous avez pris de l'avance, ce sera à vous de gérer ça... ;-)"
60                 echo ""
61             else
62                 # ok, on gère la migration en conffiles
63                 if [ ! -L /.git/info ]; then
64                     for f in /etc/auf-git-etc/info/* ; do
65                         mv -f ${f} ${f}.dpkg-dist
66                     done
67                     mv /.git/info/* /etc/auf-git-etc/info/
68                     rmdir /.git/info
69                     ln -s /etc/auf-git-etc/info /.git/
70                 fi
71                 if [ ! -L /.git/hooks ]; then
72                     for f in /etc/auf-git-etc/hooks/* ; do
73                         mv -f ${f} ${f}.dpkg-dist
74                     done
75                     mv /.git/hooks/* /etc/auf-git-etc/hooks/
76                     rmdir /.git/hooks
77                     ln -s /etc/auf-git-etc/hooks /.git/
78                 fi
79                 # on gère l'annulation du suivi du dpkg.log
80                 cd /
81                 if git ls-files | grep -q var/log/dpkg.log ; then
82                   # FIXME: ajouter --cached lors du passage en 1.5
83                   git rm var/log/dpkg.log
84                 fi
85             fi
86         # on vérifie la présence d'un existant
87         elif [ -d /var/lib/git/root ]; then
88             echo ""
89             echo "ATTENTION : un /var/lib/git/root existe mais il manque le lien dans /.git !"
90             echo "ATTENTION : vous pouvez le réinstaller avec : ln -s /var/lib/git/root /.git"
91             echo ""
92         # on crée le dépôt GIT global à ce système
93         else
94             cd /
95             git init-db > /dev/null
96             # git >= 1.5
97             #git config status.relativePaths false
98             chmod 0700 /.git
99             mkdir -p /var/lib/git
100             mv /.git /var/lib/git/root
101             ln -s /var/lib/git/root /.git
102             # déplacement des configurations par défaut dans /etc/auf-git-etc/
103             cd /.git
104             for d in info hooks ; do
105                 for f in $d/* ; do
106                     if [ -e /etc/auf-git-etc/${f} ]; then
107                         rm -f -r ${f}
108                     else
109                         mv ${f} /etc/auf-git-etc/${f}
110                     fi
111                 done
112                 rmdir $d
113                 ln -s /etc/auf-git-etc/$d $d
114             done
115             # mise en route du suivi
116             cd /
117             git add etc usr/local var boot
118             # TODO: ajouter -q quand on sera en git ≥ 1.5 (Debian "Lenny")
119             git commit -m "Mise en route du suivi de /etc et /usr/local." \
120                 --author "Installation auf-git-etc <root@apt.auf.org>" \
121                 > /dev/null
122         fi
123
124     ;;
125
126     abort-upgrade|abort-remove|abort-deconfigure)
127     ;;
128
129     *)
130         echo "postinst called with unknown argument \`$1'" >&2
131         exit 1
132     ;;
133 esac
134
135 # dh_installdeb will replace this with shell code automatically
136 # generated by other debhelper scripts.
137
138 #DEBHELPER#
139
140 exit 0