Skip to content
Permalink
2f9a3e6695
Switch branches/tags

Name already in use

A tag already exists with the provided branch name. Many Git commands accept both tag and branch names, so creating this branch may cause unexpected behavior. Are you sure you want to create this branch?
Go to file
 
 
Cannot retrieve contributors at this time
216 lines (185 sloc) 6.07 KB
#!/bin/bash
function config_init_colors() {
if [ -t 1 ] ; then
COLOR_NORMAL="\\033[0;39m\\033[0;22m"
COLOR_GREEN="\\033[0;32m"
COLOR_YELLOW="\\033[0;33m"
COLOR_RED="\\033[0;31m"
COLOR_CYAN="\\033[0;36m"
COLOR_BLUE="\\033[0;34m"
COLOR_PURPLE="\\033[0;35m"
COLOR_BRACKET=${COLOR_PURPLE}
COLOR_BRCONTENT=${COLOR_YELLOW}
COLOR_INFO=${COLOR_GREEN}
COLOR_ERROR=${COLOR_RED}
else
COLOR_NORMAL=""
COLOR_GREEN=""
COLOR_YELLOW=""
COLOR_RED=""
COLOR_CYAN=""
COLOR_BLUE=""
COLOR_PURPLE=""
COLOR_BRACKET=""
COLOR_BRCONTENT=""
COLOR_INFO="**INFO** "
COLOR_ERROR="**ERROR** "
fi
}
function config_init_base_config() {
: ${BEE_ROOT_REPOSITORY_PREFIX:=/usr/src/bee}
: ${BEE_XDG_DATADIR:=${BEE_DATADIR}}
# XDG defaults defined in xdg base spec
: ${XDG_CONFIG_HOME:=${HOME}/.config}
: ${XDG_CONFIG_DIRS:=/etc/xdg}
: ${XDG_DATA_HOME:=${HOME}/.local/share}
: ${XDG_DATA_DIRS:=/usr/local/share:/usr/share}
# always append bee special dirs to XDG search path
XDG_CONFIG_DIRS=${XDG_CONFIG_DIRS}:${BEE_SYSCONFDIR}/xdg:${BEE_SYSCONFDIR}
XDG_DATA_DIRS=${XDG_DATA_DIRS}:${BEE_XDG_DATADIR}
# append bee installed defaults to config search path
: ${BEE_CONFIG_DIR:=${BEE_DEFCONFDIR}}
XDG_CONFIG_DIRS=${XDG_CONFIG_DIRS}:${BEE_CONFIG_DIR}
# remove dupes from pathes
XDG_CONFIG_DIRS=$(beeuniq -d : ${XDG_CONFIG_DIRS//:/ })
XDG_DATA_DIRS=$(beeuniq -d : ${XDG_DATA_DIRS//:/ })
}
function config_handle_deprecated_config() {
: ${DOTBEERC:=${HOME}/.beerc}
if [ -r ${DOTBEERC} ] ; then
print_error \
"ERROR: support for ~/.beerc is" \
" deprecated please move it to" \
" ${XDG_CONFIG_HOME}/bee/beerc"
exit 1
fi
}
# load config: (bee/beerc)
#
# merge:
# - $ENV (already set or not)
# - user config (BEE_USER_CONFIG_FILE)
# - system config (BEE_CONFIG_FILE)
# - built-in defaults (see below)
#
function config_load_user_config() {
: ${BEE_USER_CONFIG_FILE:=${XDG_CONFIG_HOME}/bee/beerc}
# load user config
if [ -r "${BEE_USER_CONFIG_FILE}" ] ; then
. ${BEE_USER_CONFIG_FILE}
fi
}
function config_load_system_config() {
local IFS=":${IFS}"
if [ ! -z "${BEE_CONFIG_FILE}" -a -r "${BEE_CONFIG_FILE}" ] ; then
return
fi
BEE_CONFIG_FILE=""
# system config - search and take *first* readable
for dir in ${XDG_CONFIG_DIRS} ; do
xdgbeerc="${dir}/bee/beerc"
if [ -r "${xdgbeerc}" ] ; then
: ${BEE_CONFIG_FILE:=${xdgbeerc}}
fi
done
if [ -r ${BEE_CONFIG_FILE} ] ; then
. ${BEE_CONFIG_FILE}
fi
}
function config_set_skiplist() {
local IFS=":${IFS}"
if [ ! -z "${BEE_SKIPLIST}" -a -r "${BEE_SKIPLIST}" ] ; then
return
fi
BEE_SKIPLIST=""
# skiplist - search in user and system config - take *first* readable
for dir in ${XDG_CONFIG_HOME} ${XDG_CONFIG_DIRS} ; do
xdgskiplist="${dir}/bee/skiplist"
if [ -r "${xdgskiplist}" ] ; then
: ${BEE_SKIPLIST:=${xdgskiplist}}
return
fi
done
}
function config_verify_builtin_config() {
# set built-in default values based on uid
# - root gets system defaults..
# - other get XDG_*_HOME defaults..
if [ ${UID} -eq 0 ] ; then # root
: ${BEE_REPOSITORY_PREFIX=/usr/src/bee}
: ${BEE_METADIR=${BEE_XDG_DATADIR}/bee}
else # user
: ${BEE_REPOSITORY_PREFIX=${XDG_DATA_HOME}/beeroot}
: ${BEE_METADIR=${XDG_DATA_HOME}/beemeta}
fi
: ${BEE_TMP_TMPDIR:=/tmp}
: ${BEE_TMP_BUILDROOT:=${BEE_TMP_TMPDIR}/beeroot-${LOGNAME}}
: ${BEE_REPOSITORY_BEEDIR:=${BEE_REPOSITORY_PREFIX}/bees}
: ${BEE_REPOSITORY_PKGDIR:=${BEE_REPOSITORY_PREFIX}/pkgs}
: ${BEE_REPOSITORY_BUILDARCHIVEDIR:=${BEE_REPOSITORY_PREFIX}/build-archives}
}
function config_verify_builtin_prefixes() {
: ${PREFIX:=/usr}
: ${EPREFIX:='${PREFIX}'}
: ${BINDIR:='${EPREFIX}/bin'}
: ${SBINDIR:='${EPREFIX}/sbin'}
: ${LIBEXECDIR:='${EPREFIX}/lib/${PKGNAME}'}
: ${SYSCONFDIR:=DEFAULT}
: ${LOCALSTATEDIR:=DEFAULT}
: ${SHAREDSTATEDIR:='${LOCALSTATEDIR}'}
: ${LIBDIR:='${EPREFIX}/lib'}
: ${INCLUDEDIR:='${PREFIX}/include'}
: ${DATAROOTDIR:='${PREFIX}/share'}
: ${DATADIR:='${DATAROOTDIR}'}
: ${INFODIR:='${DATAROOTDIR}/info'}
: ${MANDIR:='${DATAROOTDIR}/man'}
: ${DOCDIR:='${DATAROOTDIR}/doc/gtkhtml'}
: ${LOCALEDIR:='${DATAROOTDIR}/locale'}
}
function expand_prefix_variables() {
if [ "${SYSCONFDIR}" = "DEFAULT" ] ; then
SYSCONFDIR="/etc"
if [ "${PREFIX}" != "/usr" -a "${PREFIX}" != "/usr/local" ] ; then
SYSCONFDIR="${PREFIX}${SYSCONFDIR}"
fi
fi
if [ "${LOCALSTATEDIR}" = "DEFAULT" ] ; then
LOCALSTATEDIR="/var"
if [ "${PREFIX}" != "/usr" -a "${PREFIX}" != "/usr/local" ] ; then
LOCALSTATEDIR="${PREFIX}${LOCALSTATEDIR}"
fi
fi
BEE_AUTO_EXCLUDE=""
for var in PREFIX EPREFIX BINDIR SBINDIR LIBEXECDIR SYSCONFDIR \
SHAREDSTATEDIR LOCALSTATEDIR LIBDIR INCLUDEDIR \
DATAROOTDIR DATADIR INFODIR LOCALEDIR MANDIR DOCDIR ; do
eval eval ${var}=\${${var}}
eval 'BEE_AUTO_EXCLUDE="${BEE_AUTO_EXCLUDE} \${${var}}"'
done
eval "BEE_AUTO_EXCLUDE=\"${BEE_AUTO_EXCLUDE}\""
}
function config_init() {
config_init_base_config
config_handle_deprecated_config
config_load_user_config
config_load_system_config
config_verify_builtin_config
config_verify_builtin_prefixes
}
function config_export() {
export BEE_REPOSITORY_PREFIX
export BEE_REPOSITORY_BEEDIR
export BEE_REPOSITORY_PKGDIR
export BEE_REPOSITORY_BUILDARCHIVEDIR
export BEE_METADIR
export BEE_TMP_TMPDIR
export BEE_TMP_BUILDROOT
export BEE_SYSCONFDIR
export BEE_DATADIR
export BEE_LIBEXECDIR
export BEE_VERSION
export XDG_CONFIG_HOME
export XDG_CONFIG_DIRS
export XDG_DATA_HOME
export XDG_DATA_DIRS
}