mirror of
https://github.com/ivuorinen/dotfiles.git
synced 2026-01-26 03:04:06 +00:00
99 lines
2.2 KiB
Bash
Executable File
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
|