summaryrefslogtreecommitdiff
path: root/.local/bin/config-path
diff options
context:
space:
mode:
Diffstat (limited to '.local/bin/config-path')
-rwxr-xr-x.local/bin/config-path90
1 files changed, 48 insertions, 42 deletions
diff --git a/.local/bin/config-path b/.local/bin/config-path
index f4c2342..7cd1fcd 100755
--- a/.local/bin/config-path
+++ b/.local/bin/config-path
@@ -1,22 +1,14 @@
#!/bin/bash
-the_guts() {
- # Add generic prefixes
- add_prefix "$HOME"
- add_prefix "$HOME/.local.$(uname -m)"
- add_prefix "$HOME/.local"
- add_prefix "$HOME/.prefix.$(uname -m)"
- add_prefix "$HOME/.prefix"
-
- # Add rubygem prefixes
- local dir
- for dir in "$HOME"/.gem/*; do
- # Only add it if we have that type of ruby
- if type "${dir##*/}" &>/dev/null; then
- add_prefix "$dir"/*
- fi
- done
-}
+# All the prefixes to consider
+prefixes=(
+ "$HOME"
+ "$HOME/.local.$(uname -m)"
+ "$HOME/.local"
+ "$HOME/.prefix.$(uname -m)"
+ "$HOME/.prefix"
+ "$HOME"/.gem/ruby/*
+)
in_array() {
local needle=$1; shift
@@ -28,41 +20,55 @@ in_array() {
return 1
}
-add_prefix() {
- local prefix=$1
- local dir
+var_init() {
+ eval "ary_$1=(\$$1)"
+}
- # PATH
- dir="$prefix/bin"
- if [[ -d "$dir" ]] && ! in_array "$dir" "${paths[@]}"; then
- paths=("$dir" "${paths[@]}")
- fi
+var_add() {
+ local varname=ary_$1; shift
+ local var_all="${varname}[@]"
+ local dirs=("$@")
- # RUBYLIB
- dir="$prefix/lib"
- if [[ -d "$dir" ]] && ! in_array "$dir" "${rubylibs[@]}"; then
- rubylibs=("$dir" "${rubylibs[@]}")
- fi
+ local dir
+ for dir in "${dirs[@]}"; do
+ if [[ -d "$dir" ]] && ! in_array "$dir" "${!var_all}"; then
+ eval "$varname=(\"\$dir\" \"\${$var_all}\")"
+ fi
+ done
+}
+
+var_done() {
+ eval "$1=\"\${ary_$1[*]}\""
+ declare -p $1
}
main() {
+ IFS=:
# Import existing values
- declare -ga paths rubylibs
- IFS=: paths=($PATH)
- IFS=: rubylibs=($RUBYLIB)
-
- the_guts
+ var_init PATH
+ var_init MANPATH
+ var_init LD_LIBRARY_PATH
+ var_init RUBYLIB
+ var_init PERL5LIB
- # Put our values into the env variables
- IFS=: PATH="${paths[*]}"
- IFS=: RUBYLIB="${rubylibs[*]}"
+ # Scan through prefixes
+ for prefix in "${prefixes[@]}"; do
+ var_add PATH "$prefix/bin" "$prefix/sbin"
+ var_add MANPATH "$prefix/share/man"
+ var_add LD_LIBRARY_PATH "$prefix"/lib{,32,64}
+ var_add RUBYLIB "$prefix"/lib{,32,64}
+ var_add PERL5LIB "$prefix"/lib{,32,64}/perl5
+ done
# Finally, print the values
- # The sed bit here is the only time we call an external program
+ # The `sed` bit here is the only time we call an external program
{
- declare -p PATH
- declare -p RUBYLIB
+ var_done PATH
+ var_done MANPATH
+ var_done LD_LIBRARY_PATH
+ var_done RUBYLIB
+ var_done PERL5LIB
} | sed 's/^declare \(-\S* \)*//'
}
-main
+main "$@"