Files
dotfiles/local/bin/x-load-configs

99 lines
2.2 KiB
Bash
Executable File

#!/usr/bin/env bash
# Load our configuration files
# Copyright (c) 2023 Ismo Vuorinen. All Rights Reserved.
DOTFILES="${DOTFILES:-$HOME/.dotfiles}"
source "$DOTFILES/config/shared.sh"
# Enable verbosity with VERBOSE=1 x-load-configs
VERBOSE="${VERBOSE:-0}"
# Enable debugging with DEBUG=1 x-load-configs
DEBUG="${DEBUG:-0}"
# Get the hostname
CONFIG_HOST="$(hostname -s)"
# Enable debugging if requested
[ "$DEBUG" = "1" ] && set -x
CONFIG_PATH="${DOTFILES}/config"
[ -d "$DOTFILES" ] || {
msg_err "Error: DOTFILES is not set or $DOTFILES does not exist"
}
# Function to print messages if VERBOSE is enabled
# $1 - message type (string)
# $2 - message content (string)
config_msg()
{
# if $1 is empty, return
[ -z "$1" ] && return
[ -z "$2" ] && $2=""
local msg_type="$1"
local msg_content="$2"
[[ "$VERBOSE" -eq 1 ]] && printf 'x-load-configs: %s %s\n' "$msg_type" "$msg_content"
return 0
}
# Function to get the full path of a config file
# $1 - filename (string)
config_file_path()
{
echo "$CONFIG_PATH/$1"
}
# Function to source configuration files
source_config()
{
local config_file=$1
if [ -f "$config_file" ]; then
eval "$config_file"
config_msg "Sourced" "$config_file"
else
msg "Config file $config_file not found"
fi
return 0
}
# Function to load a configuration file
# $1 - base config file name (string)
load_config_files()
{
local config_file="$1"
local secret_file="${config_file}-secret"
local host_file="${config_file}-${CONFIG_HOST}"
local secret_host_file="${host_file}-secret"
config_msg "Looking for" "$config_file"
[ -r "$config_file" ] && {
source_config "$config_file"
}
config_msg "Looking for" "$secret_file"
[ -r "$secret_file" ] && {
source_config "$secret_file"
}
config_msg "Looking for" "$host_file"
[ -r "$host_file" ] && {
source_config "$host_file"
}
config_msg "Looking for" "$secret_host_file"
[ -r "$secret_host_file" ] && {
source_config "$secret_host_file"
}
return 0
}
config_msg "VERBOSE=1" "Verbose mode enabled"
config_msg "HOST" "$CONFIG_HOST"
load_config_files "$(config_file_path "exports")"
load_config_files "$(config_file_path "functions")"
load_config_files "$(config_file_path "alias")"
exit 0