Require latest carnet-upgrade version.
[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="4.0.6"
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 log "carnet-upgrade v$version starting"
33
34 main_queuetab="${cnup}/actions/main.queue"
35 post_upgrade_queuetab="/var/lib/carnet-upgrade/post_upgrade.queue"
36
37 # logika kako slijedi:
38 # imamo popis testova i akcija koje ce se izvrsiti svakog testa
39 # ("queuetab" datoteka)
40 #
41 # akcije se izvrsavaju redoslijedom iz popisa
42 #
43 # neke akcije imaju dio koji se izvrsava prije i dio koji se izvrsava nakon
44 # upgradea, svaka takva akcija dodaje svoj post-upgrade dio akcije u
45 # zasebni red akcija, i onda se to izvrsava nakon upgradea na isti nacin
46 # kao glavni red akcija.
47
48 # queuetab file format:
49 # test          action
50 #
51 # eg. "pkg xinetd-cn lt 2:0     do_xinetd" means:
52 # if there is a version of xinetd-cn lower than 2:0 installed,
53 # invoke do_xinetd function
54 # generic tests:
55 # pkg  tests if a package is installed, optional arguments like
56 #      dpkg --compare-versions
57
58 # Sanitize environment
59 umask 022
60 cd /
61 LANG=C
62 PATH=/bin:/sbin:/usr/bin:/usr/sbin:/usr/share/carnet-upgrade/scripts
63 unset LC_CTYPE LC_COLLATE LC_TIME LC_NUMERIC || true
64 export PATH LANG cnup
65
66 if [ -z "$1" ]; then
67   queuetab="$main_queuetab"
68   queuename="main"
69 elif [ -f "${cnup}/actions/$1.queue" ]; then
70   queuetab="${cnup}/actions/$1.queue"
71   queuename="$1"
72   shift
73 elif [ -f "$1" ]; then
74   queuetab="$1"
75   queuename="$1"
76   shift
77 elif [ "x$1" = "x-h" -o "x$1" = "x--help" ]; then
78   echo "$version"
79   echo "$usage"
80   exit 0
81 else
82   echo "Nepoznati argumenti: $*" 1>&2
83   echo "$usage"
84   exit 1
85 fi
86
87 # need this to get custom msg_finished for "sarge" run
88 export queuename
89
90 # Do your worst
91 run_actions "$queuename" "$queuetab"
92
93 exit 0