blob: c5c50566fd700a919731f5d301af28f3ff837026 (
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
|
#!/bin/bash
INCLUDE_CONF_SH=conf.sh
LIBREUSER="${SUDO_USER:-$USER}"
LIBREHOME="$(eval echo ~$LIBREUSER)"
if [[ -z ${XDG_CONFIG_HOME:-} ]]; then
export XDG_CONFIG_HOME="${LIBREHOME}/.config"
fi
# Generic functions ############################################################
get_files() {
local slug=$1
case $slug in
makepkg.conf)
if [[ $MAKEPKG_CONF != /etc/$slug && -r $MAKEPKG_CONF ]]; then
echo "$MAKEPKG_CONF"
else
echo /etc/$slug
echo "$LIBREHOME/.$slug"
fi
;;
libretools.conf)
echo /etc/$slug
echo "$XDG_CONFIG_HOME/libretools/$slug"
;;
*.conf)
echo /etc/libretools.d/$slug
echo "$XDG_CONFIG_HOME/libretools/$slug"
;;
esac
}
load_files() {
for file in $(get_files $1.conf); do
if [[ -r $file ]]; then
. "$file"
fi
done
}
check_vars() {
local slug=$1
shift
local ret=0
for VAR in "$@"; do
if [[ -z ${!VAR} ]]; then
if [[ $(get_files $slug|wc -l) > 1 ]]; then
echo "Configure '$VAR' in one of:"
get_files $slug | sed 's/./ -> &/'
else
echo "Configure '$VAR' in $(get_files $slug)"
fi
ret=1
fi >>/dev/stderr
done
if [[ $ret != 0 ]]; then
return 1
fi
}
# makepkg configuration ########################################################
[[ -n ${MAKEPKG_CONF:-} ]] || MAKEPKG_CONF=/etc/makepkg.conf
load_conf_makepkg() {
load_files makepkg
}
get_conf_makepkg() (
set +euE
local setting=$1
local default=$2
load_conf_makepkg
printf '%s\n' "${!setting:-${default}}"
)
set_conf_makepkg() {
local key=$1
local val=$2
for file in `get_files makepkg.conf|tac`; do
if [[ -w $file ]]; then
sed -i "/^\s*$key=/d" "$file"
echo "$key='$val'" >> "$file"
return 0
fi
done
return 1
}
# libretools configuration #####################################################
load_conf_libretools() {
load_files libretools
# TODO: checks
}
load_conf_libretools_chroot() {
load_files chroot
# Exclude CHROOTEXTRAPKG from the checks because an empty value is valid
if [[ -f /.arch-chroot ]]; then
# check_vars chroot CHROOTEXTRAPKG
:
else
# check_vars chroot CHROOTDIR CHROOT CHROOTEXTRAPKG
check_vars chroot CHROOTDIR CHROOT
fi
}
|