diff --git a/ssm b/ssm index 343faa9..8d26fd4 100755 --- a/ssm +++ b/ssm @@ -349,20 +349,27 @@ main() { default XDG_CONFIG_HOME "$HOME/.config" default XDG_RUNTIME_DIR "/run/user/$UID" - cfgdir="$XDG_CONFIG_HOME/ssm" + service_path=( "$XDG_CONFIG_HOME/ssm/services" ) + cfg_path=( "$XDG_CONFIG_HOME/ssm" ) + rundir="$XDG_RUNTIME_DIR/ssm" logdir="$HOME/log/ssm" else - cfgdir='/etc/ssm' rundir='/run/ssm' logdir='/var/log/ssm' fi - service_path+=( "$cfgdir/init.d" "$rundir/services" "$usrdir/services" ) + # Common service path + service_path+=( '/etc/ssm/init.d' "$rundir/services" "$usrdir/services" ) + + # Common config path + cfg_path+=( '/etc/ssm/conf.d' ) # Load custom functions - for f in "$cfgdir/functions"/*; do - source "$f" || die 9 "Failed to source functions from $f" + for p in "${cfg_path[@]}"; do + for f in "$p/functions"/*; do + source "$f" || die 9 "Failed to source functions from $f" + done done # Now create the needed runtime stuff @@ -376,7 +383,10 @@ main() { service_config=$1 else for i in "${service_path[@]}"; do - [[ -f "$i/$1" ]] && service_config="$i/$1" + [[ -f "$i/$1" ]] && { + service_config="$i/$1" + break + } done fi @@ -390,12 +400,15 @@ main() { svc_pidfile="$rundir/$service_name.pid" # Get the service defaults - [[ -f "$cfgdir/conf.d/$service_name" ]] && { - source "$cfgdir/conf.d/$service_name" || die 5 "Failed to read service defaults: $cfgdir/conf.d/$service_name" - } + for p in "${cfg_path[@]}"; do + [[ -f "$p/conf.d/$service_name" ]] && { + source "$p/conf.d/$service_name" || die 5 "Failed to read service defaults: $p/conf.d/$service_name" + break + } + done # Get the service config - source -- "$service_config" "${@:3}" || die 7 "Failed to read the service config: $cfgdir/init.d/$service_name" + source -- "$service_config" "${@:3}" || die 7 "Failed to read the service config: $service_config" # Legacy [[ "$service_args" ]] && service_command=( "${service_command[@]}" "${service_args[@]}" )