Release version 4.0.5.
[carnet-upgrade.git] / src / cn-upgrade
1 #!/bin/bash
2 # last update: 2005-01-07
3 # Zoran 'jelly' Dzelajlija <jelly@srce.hr>
4 # Ivan 'ico' Rako <irako@srce.hr>
5 version="carnet-upgrade v4.0.5"
6
7 # restart upgrade under script for logging purposes
8 if [ "$1" == "--no-script" ]; then
9     shift
10 elif [ -x /usr/bin/script ]; then
11     exec /usr/bin/script -a -t -f -c "$0 --no-script $@" \
12          /var/log/carnet-upgrade.typescript 2>>/var/log/carnet-upgrade.timing
13 fi
14
15 set -e
16
17 if [ "$DEBUG" ]; then
18   set -x
19   #ROOT=/home/jelly/work/src/carnet-upgrade
20   # make apt-get simulate-only for debug
21   s=s
22 else
23   ROOT=""
24 fi
25
26 cnup="/usr/share/carnet-upgrade"
27
28 . ${ROOT}${cnup}/data.sh
29 . ${ROOT}${cnup}/messages.sh
30 . ${ROOT}${cnup}/functions.sh
31
32 main_queuetab="${cnup}/actions/main.queue"
33 post_upgrade_queuetab="/var/lib/carnet-upgrade/post_upgrade.queue"
34
35 # logika kako slijedi:
36 # imamo popis testova i akcija koje ce se izvrsiti svakog testa
37 # ("queuetab" datoteka)
38 #
39 # akcije se izvrsavaju redoslijedom iz popisa
40 #
41 # neke akcije imaju dio koji se izvrsava prije i dio koji se izvrsava nakon
42 # upgradea, svaka takva akcija dodaje svoj post-upgrade dio akcije u
43 # zasebni red akcija, i onda se to izvrsava nakon upgradea na isti nacin
44 # kao glavni red akcija.
45
46 # queuetab file format:
47 # test          action
48 #
49 # eg. "pkg xinetd-cn lt 2:0     do_xinetd" means:
50 # if there is a version of xinetd-cn lower than 2:0 installed,
51 # invoke do_xinetd function
52 # generic tests:
53 # pkg  tests if a package is installed, optional arguments like
54 #      dpkg --compare-versions
55
56 # Sanitize environment
57 umask 022
58 cd /
59 LANG=C
60 PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/share/carnet-upgrade/scripts
61 unset LC_CTYPE LC_COLLATE LC_TIME LC_NUMERIC || true
62 export PATH LANG cnup
63
64 if [ -z "$1" ]; then
65   queuetab="$main_queuetab"
66   queuename="main"
67 elif [ -f "${cnup}/actions/$1.queue" ]; then
68   queuetab="${cnup}/actions/$1.queue"
69   queuename="$1"
70   shift
71 elif [ -f "$1" ]; then
72   queuetab="$1"
73   queuename="$1"
74   shift
75 elif [ "x$1" = "x-h" -o "x$1" = "x--help" ]; then
76   echo "$version"
77   echo "$usage"
78   exit 0
79 else
80   echo "Nepoznati argumenti: $*" 1>&2
81   echo "$usage"
82   exit 1
83 fi
84
85 # need this to get custom msg_finished for "sarge" run
86 export queuename
87
88 # Do your worst
89 run_actions "$queuename" "$queuetab"
90
91 exit 0