#!/usr/bin/env bash
|
|
# Summary: Substitute realpath if unavailable as a builtin or file
|
|
# Usage: . pyenv-virtualenv-realpath
|
|
|
|
if ! {
|
|
enable -f "${BASH_SOURCE%/*}"/../../../libexec/pyenv-realpath.dylib realpath ||
|
|
type realpath
|
|
} >/dev/null 2>&1; then
|
|
if [ -n "$PYENV_NATIVE_EXT" ]; then
|
|
echo "pyenv: failed to load \`realpath' builtin" >&2
|
|
exit 1
|
|
fi
|
|
|
|
READLINK=$(type -p greadlink readlink | head -1)
|
|
if [ -z "$READLINK" ]; then
|
|
echo "pyenv: cannot find readlink - are you missing GNU coreutils?" >&2
|
|
exit 1
|
|
fi
|
|
|
|
resolve_link() {
|
|
$READLINK "$1"
|
|
}
|
|
|
|
realpath() {
|
|
local f="$*" \
|
|
name dir
|
|
[[ $f ]] || {
|
|
>&2 echo ${FUNCNAME[0]}: missing operand
|
|
return
|
|
}
|
|
while [[ -L $f ]]; do
|
|
f="$(resolve_link "$f")"
|
|
done
|
|
if [[ ! -d $f ]]; then
|
|
name="/${f##*/}"
|
|
# parent?
|
|
dir="${f%/*}"
|
|
if [[ $dir == $f ]]; then
|
|
#lacks /: parent is current directory
|
|
f="$PWD"
|
|
else
|
|
f="$dir"
|
|
fi
|
|
fi
|
|
#absolute directory
|
|
dir="$(cd "$f"
|
|
pwd)"
|
|
echo "$dir$name"
|
|
}
|
|
fi
|