summaryrefslogtreecommitdiff
path: root/src/lib/conf.sh
diff options
context:
space:
mode:
authorLuke Shumaker <lukeshu@sbcglobal.net>2014-10-01 03:16:30 -0400
committerLuke Shumaker <lukeshu@sbcglobal.net>2014-10-01 03:16:30 -0400
commit9b6b6dad291e2d62a957a38ace952d98147a83d2 (patch)
tree1e3e37af8a9d693d0cb749999aaaef095bb7876c /src/lib/conf.sh
parent051a269d2ff56d5ab01301c965a7f7d0799bc441 (diff)
conf.sh: don't hardcode /etc, get it during build from $(sysconfdir)
Diffstat (limited to 'src/lib/conf.sh')
-rw-r--r--src/lib/conf.sh207
1 files changed, 0 insertions, 207 deletions
diff --git a/src/lib/conf.sh b/src/lib/conf.sh
deleted file mode 100644
index 3c4234f..0000000
--- a/src/lib/conf.sh
+++ /dev/null
@@ -1,207 +0,0 @@
-#!/usr/bin/env bash # non-executable, but put this there as a hint to text editors
-# This may be included with or without `set -euE`
-
-# Copyright (C) 2012-2014 Luke Shumaker <lukeshu@sbcglobal.net>
-#
-# License: GNU GPLv2+
-#
-# This program is free software; you can redistribute it and/or modify
-# it under the terms of the GNU General Public License as published by
-# the Free Software Foundation; either version 2 of the License, or
-# (at your option) any later version.
-#
-# This program is distributed in the hope that it will be useful,
-# but WITHOUT ANY WARRANTY; without even the implied warranty of
-# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
-# GNU General Public License for more details.
-#
-# You should have received a copy of the GNU General Public License
-# along with this program. If not, see <http://www.gnu.org/licenses/>.
-
-LIBREUSER="${SUDO_USER:-$USER}"
-if [[ $LIBREUSER == $USER ]]; then
- LIBREHOME=$HOME
-else
- LIBREHOME="$(eval echo ~$LIBREUSER)"
-fi
-if [[ -z ${XDG_CONFIG_HOME:-} ]]; then
- export XDG_CONFIG_HOME="${LIBREHOME}/.config"
-fi
-if [[ -z ${XDG_CACHE_HOME:-} ]]; then
- export XDG_CACHE_HOME="${LIBREHOME}/.cache"
-fi
-
-# Low-level generic functions ##################################################
-
-# Usage: list_files $slug
-# Lists the configuration files to be considered for $slug.
-# Later files should take precedence over earlier files.
-list_files() {
- local slug=$1
- case $slug in
- abs)
- echo /etc/$slug.conf
- echo "$LIBREHOME/.$slug.conf"
- ;;
- makepkg)
- if [[ ${MAKEPKG_CONF:-} != /etc/$slug.conf && -r ${MAKEPKG_CONF:-} ]]; then
- echo "$MAKEPKG_CONF"
- else
- echo /etc/$slug.conf
- echo "$LIBREHOME/.$slug.conf"
- fi
- ;;
- xbs*)
- echo /etc/xbs/$slug.conf
- echo "$XDG_CONFIG_HOME/xbs/$slug.conf"
- ;;
- libretools)
- echo /etc/$slug.conf
- echo "$XDG_CONFIG_HOME/libretools/$slug.conf"
- ;;
- *)
- echo /etc/libretools.d/$slug.conf
- echo "$XDG_CONFIG_HOME/libretools/$slug.conf"
- ;;
- esac
-}
-
-# Usage: list_envvars $slug
-# Lists the environmental variables that take precedence over the configuration
-# files for $slug.
-list_envvars() {
- local slug=$1
- case $slug in
- makepkg)
- printf '%s\n' \
- PKGDEST SRCDEST SRCPKGDEST LOGDEST \
- BUILDDIR \
- PKGEXT SRCEXT \
- GPGKEY PACKAGER
- ;;
- libretools)
- printf '%s\n' DIFFPROG
- ;;
- xbs)
- printf '%s\n' BUILDSYSTEM
- ;;
- *) :;;
- esac
-}
-
-# High-level generic functions #################################################
-
-# Usage: load_files $slug
-# Loads the configuration files for $slug in the proper order.
-load_files() {
- local slug=$1
- local var
- local file
-
- # Save the existing versions at _VARNAME
- for var in $(list_envvars $slug); do
- [[ -n ${!var:-} ]] && eval "_$var=\${$var}"
- done
-
- # Load the files
- for file in $(list_files $slug); do
- if [[ -r $file ]]; then
- . "$file" || return 1
- fi
- done
-
- # Restore the _SAVED versions
- for var in $(list_envvars $slug); do
- eval "$var=\${_$var:-\${$var:-}}"
- done
-}
-
-# Usage: check_vars $slug VAR1 VAR2...
-# Check whether the variables listed are properly set.
-# If not, it prints a message saying to set them in the configuration file(s)
-# for $slug.
-check_vars() (
- local slug=$1; shift
-
- local ret=0
-
- local VAR
- for VAR in "$@"; do
- if [[ -z ${!VAR:-} ]]; then
- type print &>/dev/null || . libremessages
- if [[ $(list_files $slug|wc -l) -gt 1 ]]; then
- _l print "Configure '%s' in one of:" "$VAR"
- list_files $slug | sed 's/./ -> &/'
- else
- _l print "Configure '%s' in '%s'" "$VAR" "$(list_files $slug)"
- fi
- ret=1
- fi
- done >&2
-
- if [[ $ret != 0 ]]; then
- return 1
- fi
-)
-
-# Usage: get_var <slug> <var_name> <default_value>
-# Does not work with arrays
-get_var() (
- set +euE
- local slug=$1
- local setting=$2
- local default=$3
- load_files "$slug"
- printf '%s' "${!setting:-${default}}"
-)
-
-# Usage: set_var <slug> <var_name> <value>
-# Does not work with arrays
-set_var() {
- local slug=$1
- local key=$2
- local val=$3
- local file
- for file in $(list_files "$slug"|tac); do
- if [[ -w $file ]]; then
- sed -i "/^\s*$key=/d" "$file"
- printf '%s=%q\n' "$key" "$val" >> "$file"
- return 0
- fi
- done
- return 1
-}
-
-# PKGBUILD (not configuration, per se) #########################################
-
-unset_PKGBUILD() {
- # This routine is based primarily off of the PKGBUILD(5) man-page,
- # version 4.1.2, dated 2013-06-18.
-
- # From the "OPTIONS AND DIRECTIVES" section (in order of mention)
- unset -v pkgname pkgver
- unset -f pkgver
- unset -v pkgrel pkgdesc epoch url license install changelog source
- unset -v noextract md5sums sha{1,256,384,512}sums groups arch backup
- unset -v depends makedepends checkdepends optdepends conflicts provides
- unset -v replaces options
-
- # From the "PACKAGING FUNCTIONS" section (in order of mention)
- unset -f package prepare build check
-
- # From the "PACKAGE SPLITTING" section
- unset -f $(declare -f|sed -n 's/^\(package_\S*\) ()\s*$/\1/p')
- unset -v pkgbase
-
- # These are used by the `librefetch` program
- unset -v mksource mknoextract mkmd5sums mksha{1,256,384,512}sums
- unset -v mkdepends
- unset -f mksource
-}
-
-load_PKGBUILD() {
- local file=${1:-./PKGBUILD}
- unset_PKGBUILD
- CARCH="$(get_var makepkg CARCH "`uname -m`")"
- . "$file"
-}