mirror of
https://github.com/Matir/skel.git
synced 2026-06-10 03:13:40 -07:00
Update skel, common functions.
This commit is contained in:
63
dotfiles/commonrc.sh
Normal file
63
dotfiles/commonrc.sh
Normal file
@@ -0,0 +1,63 @@
|
||||
#!/bin/sh
|
||||
# shellcheck disable=SC1090
|
||||
|
||||
# common functions for use in shell scripts
|
||||
|
||||
find_first() {
|
||||
while [ "$#" -gt 0 ]; do
|
||||
if test -e "${1}" ; then
|
||||
echo "${1}"
|
||||
return 0
|
||||
fi
|
||||
shift
|
||||
done
|
||||
return 1
|
||||
}
|
||||
|
||||
have_command() {
|
||||
command -v "$1" >/dev/null 2>&1
|
||||
}
|
||||
|
||||
# Helper function: Returns 0 if the directory is in PATH, 1 otherwise
|
||||
path_contains() {
|
||||
case ":${PATH}:" in
|
||||
*:"$1":*) return 0 ;;
|
||||
*) return 1 ;;
|
||||
esac
|
||||
}
|
||||
|
||||
# Prepend a directory to PATH if it's not already there
|
||||
path_prepend() {
|
||||
if [ -d "$1" ] && ! path_contains "$1"; then
|
||||
PATH="$1:${PATH}"
|
||||
fi
|
||||
}
|
||||
|
||||
# Append a directory to PATH if it's not already there
|
||||
path_append() {
|
||||
if [ -d "$1" ] && ! path_contains "$1"; then
|
||||
PATH="${PATH}:$1"
|
||||
fi
|
||||
}
|
||||
|
||||
source_first_existing() {
|
||||
_sfe_script="$(find_first "$@")"
|
||||
_sfe_status=$?
|
||||
|
||||
if [ "$_sfe_status" -eq 0 ]; then
|
||||
. "$_sfe_script"
|
||||
# Clean up our temporary variables before returning success
|
||||
unset -v _sfe_script _sfe_status
|
||||
return 0
|
||||
fi
|
||||
|
||||
# Clean up our temporary variables before returning failure
|
||||
unset -v _sfe_script _sfe_status
|
||||
return 1
|
||||
}
|
||||
|
||||
source_if_existing() {
|
||||
if [ -f "$1" ]; then
|
||||
. "$1"
|
||||
fi
|
||||
}
|
||||
@@ -59,6 +59,8 @@ DIRSTACKSIZE=16
|
||||
|
||||
export OS="$(uname 2>/dev/null || echo "Unknown")"
|
||||
|
||||
source ~/.commonrc.sh
|
||||
|
||||
# Set terminal title
|
||||
case $TERM in
|
||||
# Only set the title for terminals that are likely to support it
|
||||
@@ -163,25 +165,6 @@ bindkey '^r' history-incremental-search-backward
|
||||
# delete really deletes
|
||||
bindkey "^[[3~" delete-char
|
||||
|
||||
source_if_existing() {
|
||||
[[ -f "${1}" ]] && source "${1}"
|
||||
}
|
||||
|
||||
source_first_existing() {
|
||||
while (($#)); do
|
||||
if test -e "${1}" ; then
|
||||
source "${1}"
|
||||
return
|
||||
fi
|
||||
shift
|
||||
done
|
||||
return 1
|
||||
}
|
||||
|
||||
have_command() {
|
||||
command -v "${1}" &>/dev/null
|
||||
}
|
||||
|
||||
if test -d ${HOME}/.local/bin ; then
|
||||
export PATH="${HOME}/.local/bin:${PATH}"
|
||||
fi
|
||||
|
||||
@@ -2,31 +2,18 @@ function dumpenv {
|
||||
if [ "$(uname)" = "Linux" ]; then
|
||||
tr '\0' '\n' < /proc/${1}/environ
|
||||
elif [ "$(uname)" = "Darwin" ]; then
|
||||
# macOS doesn't have /proc, use ps instead.
|
||||
# macOS doesn't have /proc, use ps instead.
|
||||
# Note: this may truncate if environment is very large.
|
||||
ps -p ${1} -wwwe -o command= | tr ' ' '\n' | grep '='
|
||||
fi
|
||||
}
|
||||
|
||||
if test -x "/sbin/starship" ; then
|
||||
_STARSHIP_PATH="/sbin/starship"
|
||||
_STARSHIP_PATH="$(find_first "$(command -v starship)" /sbin/starship "${HOME}/tools/starship/starship" "${HOME}/.local/bin/starship" /usr/local/bin/starship)"
|
||||
if test -n "$_STARSHIP_PATH" ; then
|
||||
function starship_prompt {
|
||||
eval "$(/sbin/starship init zsh)"
|
||||
}
|
||||
elif test -x "${HOME}/tools/starship/starship" ; then
|
||||
_STARSHIP_PATH="${HOME}/tools/starship/starship"
|
||||
function starship_prompt {
|
||||
eval "$($HOME/tools/starship/starship init zsh)"
|
||||
eval "$($_STARSHIP_PATH init zsh)"
|
||||
}
|
||||
fi
|
||||
if test -f ${HOME}/.zprompt ; then
|
||||
if test "$(cat ${HOME}/.zprompt)" = "starship" ; then
|
||||
if test -n "${_STARSHIP_PATH:-}" ; then
|
||||
eval "$(${_STARSHIP_PATH} init zsh)"
|
||||
fi
|
||||
fi
|
||||
fi
|
||||
unset _STARSHIP_PATH
|
||||
|
||||
function hashall {
|
||||
tee >(md5sum) | tee >(sha1sum) | sha256sum
|
||||
|
||||
Reference in New Issue
Block a user