introduced distro version detection and automatic system dependent configuration loading
This commit is contained in:
56
lib/version.sh
Normal file
56
lib/version.sh
Normal file
@@ -0,0 +1,56 @@
|
||||
# ------------------------------------------------------------------------------
|
||||
# Version determination function
|
||||
# This file is part of the init.sh project
|
||||
# Copyright (c) 2019-2021 Geoffray Levasseur <fatalerrors@geoffray-levasseur.org>
|
||||
# ------------------------------------------------------------------------------
|
||||
# This file is distributed under 3-clause BSD license.
|
||||
# The complete license agreement can be obtained at:
|
||||
# https://opensource.org/licenses/BSD-3-Clause
|
||||
# ------------------------------------------------------------------------------
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# Return on stdout $distro $version $codename
|
||||
read_os_release()
|
||||
{
|
||||
if [[ ! -f /etc/os-release ]]; then
|
||||
prnt E "Your distribution doesn't have the needed os-release file."
|
||||
die 8 --force
|
||||
fi
|
||||
|
||||
# Create a sub-shell to avoid polluting the environnement
|
||||
(
|
||||
# Iniitalise version codename in case the var don't exists
|
||||
VERSION_CODENAME="NULL"
|
||||
|
||||
# Import the file in the environment
|
||||
source /etc/os-release
|
||||
|
||||
if [[ -z $ID || -z $VERSION_ID ]]; then
|
||||
prnt E "Your /etc/os-release file mises some vital information."
|
||||
die --force 8
|
||||
fi
|
||||
|
||||
# Return values on standard stdout
|
||||
echo ${ID,,} ${VERSION_ID} ${VERSION_CODENAME,,}
|
||||
#prnt I "OS is: ${ID,,} ${VERSION_ID} ${VERSION_CODENAME,,}"
|
||||
)
|
||||
}
|
||||
export read_os_release
|
||||
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# Create system related variables
|
||||
# ------------------------------------------------------------------------------
|
||||
get_os_version()
|
||||
{
|
||||
if [[ $# -ne 3 ]]; then
|
||||
prnt E "get_os_version(): incorect number of parameters ($@)."
|
||||
die 7 --force
|
||||
fi
|
||||
|
||||
export SYS_DIST=$1
|
||||
export SYS_VER=$2
|
||||
if [[ $3 != "null" ]]; then
|
||||
export SYS_CODE=$3
|
||||
fi
|
||||
}
|
||||
@@ -115,6 +115,45 @@ read_commandline()
|
||||
export -f read_commandline
|
||||
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# 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
|
||||
}
|
||||
export -f load_autoconf
|
||||
|
||||
|
||||
# ------------------------------------------------------------------------------
|
||||
# Load configuration with the following priorities:
|
||||
# 1) Those given on command line, if any
|
||||
|
||||
Reference in New Issue
Block a user