#!/bin/bash # ------------------------------------------------------------------------------ # Loaders for conf and prepost functions # This file is part of the init.sh project # Copyright (c) 2019-2022 Geoffray Levasseur # ------------------------------------------------------------------------------ # This file is distributed under 3-clause BSD license. # The complete license agreement can be obtained at: # https://opensource.org/licenses/BSD-3-Clause # ------------------------------------------------------------------------------ # ------------------------------------------------------------------------------ # Automatically load system specific configuration if file exist in the # following order: # 1) auto/arch.conf.sh # 2) auto/distro.conf.sh # 3) auto/distro-arch.conf.sh # 4) auto/distro-version.conf.sh # 5) auto/distro-codename.conf.sh (if sys_code defined) # 6) auto/distro-version-arch.conf.sh # 7) auto/distro-codename-arch.conf.sh (if sys_code defined) load_autoconf() { local prefix="$MYPATH/conf/auto" if [[ -e $prefix/$SYS_ARCH.conf.sh ]]; then . $prefix/$SYS_ARCH.conf.sh fi if [[ -e $prefix/$SYS_DIST.conf.sh ]]; then . $prefix/$SYS_DIST.conf.sh fi if [[ -e $prefix/$SYS_DIST-$SYS_ARCH.conf.sh ]]; then . $prefix/$SYS_DIST-$SYS_ARCH.conf.sh fi if [[ -e $prefix/$SYS_DIST-$SYS_VER.conf.sh ]]; then . $prefix/$SYS_DIST-$SYS_VER.conf.sh fi if [[ -n $SYS_CODE && -e $prefix/$SYS_DIST-$SYS_CODE.conf.sh ]]; then . $prefix/$SYS_DIST-$SYS_CODE.conf.sh fi if [[ -e $prefix/$SYS_DIST-$SYS_VER-$SYS_ARCH.conf.sh ]]; then . $prefix/$SYS_DIST-$SYS_VER-$SYS_ARCH.conf.sh fi if [[ -n $SYS_CODE && -e $prefix/$SYS_DIST-$SYS_CODE-$SYS_ARCH.conf.sh ]]; then . $prefix/$SYS_DIST-$SYS_CODE-$SYS_ARCH.conf.sh fi unset prefix } export -f load_autoconf # ------------------------------------------------------------------------------ # Load configuration with the following priorities: # 1) Those given on command line, if any # 2) /conf//.conf (Hostname based and specific) # 2) /conf/.conf (Hostname based and specific) # 3) /conf/init.conf.sh (Generic default, for testing) load_configuration() { if [[ -n $CONFFILES ]]; then local f= for f in $CONFFILES; do prnt I "Loading $f manually specified." if [[ -s $f ]]; then . $f else prnt E "The $f file doesn't exists or is empty." die 6 --force fi done unset f else prnt I "Loading configuration..." if [[ -e $MYPATH/conf/$REALM/$HOSTNAME.conf.sh ]]; then prnt I "A specific configuration will be used." . $MYPATH/conf/$HOSTNAME.conf.sh elif [[ -e $MYPATH/conf/$HOSTNAME.conf.sh ]]; then prnt I "A specific configuration will be used." . $MYPATH/conf/$HOSTNAME.conf.sh else if [[ -e $MYPATH/conf/init.conf.sh ]]; then prnt I "A generic configuration will be used." . $MYPATH/conf/init.conf.sh else prnt E "No configuration found, impossible to continue." die 6 --force fi fi fi } export -f load_configuration # ------------------------------------------------------------------------------ # Load pre and post actions for package manager load_prepost_actions() { local prepost= for prepost in $MYPATH/prepost.d/*.sh; do prnt I "Loading prepost actions in $prepost ..." . $prepost done unset prepost } export -f load_prepost_actions # EOF