Skip to content

Instantly share code, notes, and snippets.

@3v1n0
Created April 4, 2022 15:45
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save 3v1n0/45f140f234192caa77f6e2f7ff1e97e5 to your computer and use it in GitHub Desktop.
Save 3v1n0/45f140f234192caa77f6e2f7ff1e97e5 to your computer and use it in GitHub Desktop.
#!/usr/bin/env bash
#
# Use
# eval $(prefix-builder.sh [add|rm|prepend|append] folder)
#
# or Alias such as:
# function eval_cmd() { eval $($*); }
# alias build-prefix="eval_cmd prefix-builder.sh"
# alias add-build-prefix="eval_cmd prefix-builder.sh add"
# alias rm-build-prefix="eval_cmd prefix-builder.sh rm"
#
# To get these commands:
# build-prefix [add|rm|prepend|append] folder
# add-build-prefix folder
# rm-build-prefix folder
#
if [ "$1" != "add" ] && [ "$1" != "rm" ] && [ "$1" != "prepend" ] && [ "$1" != "append" ]; then
echo "echo You should either use 'prepend', 'append', 'add' or 'rm' operator";
exit 1;
fi
if [ -z "$2" ]; then
echo "echo You should provide a valid prefix";
exit 1;
elif [ ! -d "$2" ]; then
echo "echo $2 is not a valid folder"
exit 1;
fi
function strip_prefix()
{
local env=$1
local prefix=$2
local IFS=':'
read -a array <<< "$env";
for i in "${!array[@]}"; do
if [[ "${array[i]}" == "$prefix"* ]]; then
unset array[i];
fi
done
echo "${array[*]}"
}
function write_new_path()
{
local old_path="$1"
local new_path="$2"
# echo stripping $new_path from $old_path
# # if [ *"$old_path"* == "$new_path" ]; then
# if (echo "$old_path" | grep -Fq "$new_path"); then
# old_path=$(strip_prefix "$old_path", "$new_path")
# fi
local IFS=':'
read -a paths <<< "$old_path";
# for i in "${!paths[@]}"; do
# if [[ "${paths[i]}" == "$new_path"* ]]; then
# echo "Already known, removing" ${paths[i]}
# unset paths[i];
# fi
# done
if [ $action == "append" ]; then
paths+=("$new_path")
else # add | prepend
paths=("$new_path" ${paths[@]})
fi
echo "${paths[*]}"
}
action=$1
PREFIX=$(readlink -f $2)
PREFIX=${PREFIX%/}
arch_path=$(dpkg-architecture -qDEB_HOST_GNU_TYPE)
if [ "$action" != "rm" ]; then
echo export PATH=$(write_new_path "$PATH" "$PREFIX/sbin:$PREFIX/bin")
echo export CPATH=$(write_new_path "$CPATH" "$PREFIX/include")
# echo export MANPATH=$(write_new_path "$MANPATH" "$PREFIX/share/man")
# echo export INFOPATH=$(write_new_path "$INFOPATH" "$PREFIX/share/info")
echo export LIBRARY_PATH=$(write_new_path "$LIBRARY_PATH" "$PREFIX/lib")
echo export LD_LIBRARY_PATH=$(write_new_path "$LD_LIBRARY_PATH" "$PREFIX/lib/$arch_path:$PREFIX/lib")
echo export LD_RUN_PATH=$(write_new_path "$LD_RUN_PATH" "$PREFIX/lib")
echo export XDG_DATA_DIRS=$(write_new_path "$XDG_DATA_DIRS" "$PREFIX/share")
echo export XDG_CONFIG_DIRS=$(write_new_path "$XDG_CONFIG_DIRS" "$PREFIX/etc/xdg")
echo export PKG_CONFIG_PATH=$(write_new_path "$PKG_CONFIG_PATH" "$PREFIX/lib/pkgconfig:$PREFIX/lib/$arch_path/pkgconfig:$PREFIX/share/pkgconfig")
echo export PYTHONPATH=$(write_new_path "$PYTHONPATH" "$PREFIX/lib/python2.7/site-packages:$PREFIX/lib/python3.5/site-packages:$PREFIX/lib/python3.4/site-packages")
echo export QML2_IMPORT_PATH=$(write_new_path "$QML2_IMPORT_PATH" "$PREFIX/lib/$arch_path/qt5/qml:$PREFIX/lib/qt5/qml")
echo export GI_TYPELIB_PATH=$(write_new_path "$GI_TYPELIB_PATH" "$PREFIX/lib/girepository-1.0")
#ACLOCAL_FLAGS='-I /opt/dev/COMPIZ/share/aclocal'; export ACLOCAL_FLAGS
elif [ "$action" == "rm" ]; then
echo export PATH=$(strip_prefix "$PATH" "$PREFIX")
echo export CPATH=$(strip_prefix "$CPATH" "$PREFIX")
# echo export MANPATH=$(strip_prefix "$MANPATH" "$PREFIX")
# echo export INFOPATH=$(strip_prefix "$INFOPATH" "$PREFIX")
echo export LIBRARY_PATH=$(strip_prefix "$LIBRARY_PATH" "$PREFIX")
echo export LD_LIBRARY_PATH=$(strip_prefix "$LD_LIBRARY_PATH" "$PREFIX")
echo export LD_RUN_PATH=$(strip_prefix "$LD_RUN_PATH" "$PREFIX")
echo export XDG_DATA_DIRS=$(strip_prefix "$XDG_DATA_DIRS" "$PREFIX")
echo export XDG_CONFIG_DIRS=$(strip_prefix "$XDG_CONFIG_DIRS" "$PREFIX")
echo export PKG_CONFIG_PATH=$(strip_prefix "$PKG_CONFIG_PATH" "$PREFIX")
echo export PYTHONPATH=$(strip_prefix "$PYTHONPATH" "$PREFIX")
echo export QML2_IMPORT_PATH=$(strip_prefix "$QML2_IMPORT_PATH" "$PREFIX")
echo export GI_TYPELIB_PATH=$(strip_prefix "$GI_TYPELIB_PATH" "$PREFIX")
fi
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment