blob: 818a1db08a01fb6c1dff0243164dbf2fc049ddf1 (
plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
|
#!/bin/bash
###### Set some default variables or get them from the setup script ######
TITLE="Flexible Installer Framework for Arch linux"
LOG="/dev/tty7"
# flags like --noconfirm should not be specified here. it's up to the profile to decide the interactivity
PACMAN=pacman
PACMAN_TARGET="pacman --root $TARGET_DIR --config /tmp/pacman.conf"
###### Miscalleaneous functions ######
usage ()
{
if [ "$var_UI_TYPE" = dia ]
then
DIALOG --msgbox "$0 <profilename>\n
If the profilename starts with 'http://' it will be wget'ed. Otherwise it's assumed to be a profile saved on disk. See README\n
Available profiles:\n
`ls -l /home/arch/fifa/profile-*`" 14 65
else
echo "$0 <profilename>"
echo "If the profilename starts with 'http://' it will be wget'ed. Otherwise it's assumed to be a profile saved on disk. See README"
echo "Available profiles:"
ls -l /home/arch/fifa/profile-*
fi
}
##### "These functions would fit more in lib-ui, but we need them immediately" functions ######
die_error ()
{
if [ "$var_UI_TYPE" = dia ]
then
DIALOG --msgbox "Error: $@" 0 0
else
echo "ERROR: $@"
fi
exit 2
}
notify ()
{
if [ "$var_UI_TYPE" = dia ]
then
DIALOG --msgbox "$@" 20 50
else
echo "$@"
fi
}
###### Core functions ######
load_profile()
{
[ -z "$1" ] && die_error "load_profile needs a profile argument"
notify "Loading profile $1 ..."
if [[ $1 =~ ^http:// ]]
then
profile=/home/arch/fifa/profile-downloaded-`basename $1`
wget $1 -q -O $profile >/dev/null || die_error "Could not download profile $1"
else
profile=/home/arch/fifa/profile-$1
fi
[ -f "$profile" ] && source "$profile" || die_error "Something went wrong while sourcing profile $profile"
}
load_library ()
{
[ -z "$1" ] && die_error "load_library needs a library argument"
for library in $@
do
notify "Loading library $library ..."
source $library || die_error "Something went wrong while sourcing library $library"
done
}
execute ()
{
[ -z "$1" -o -z "$2" ] && die_error "Use the execute function like this: execute <type> <name> with type=phase/worker"
[ "$1" != phase -a "$1" != worker ] && die_error "execute's first argument must be a valid type (phase/worker)"
[ "$1" = phase ] && notify "******* Executing phase $2"
[ "$1" = worker ] && notify "*** Executing worker $2"
if type -t $1_$2 | grep -q function
then
PWD_BACKUP=`pwd`
$1_$2
cd $PWD_BACKUP
else
die_error "$1 $2 is not defined!"
fi
}
###### perform actual logic ######
echo "Welcome to $TITLE"
[ -z "$1" ] && usage && exit 1
mount -o remount,rw / &>/dev/null
load_library /home/arch/fifa/lib/lib-*.sh
[ "$1" != base ] && load_profile base
load_profile $1
execute phase preparation
execute phase basics
execute phase system
execute phase finish
|