Put symlink dereferencing loop into function for copy installation

This commit is contained in:
LoveIsGrief 2014-11-23 11:33:16 +01:00
parent 736aacf4e1
commit ed29fa9bd8

View File

@ -1,16 +1,27 @@
#!/bin/bash #!/bin/bash
# Get this script after dereferincing all symlinks set -e
# Adapted from stackoverflow: https://stackoverflow.com/a/246128
# Get's the path of the current script calling the function
# !! Doesn't check for circular symlinks !! # !! Doesn't check for circular symlinks !!
SOURCE="${BASH_SOURCE[0]}" # e.g /tmp/path/to/script.sh
function nvm_script_path(){
SOURCE=$0
while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink
DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )" DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
SOURCE="$(readlink "$SOURCE")" SOURCE="$(readlink "$SOURCE")"
[[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located [[ $SOURCE != /* ]] && SOURCE="$DIR/$SOURCE" # if $SOURCE was a relative symlink, we need to resolve it relative to the path where the symlink file was located
done done
DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )" DIR="$( cd -P "$( dirname "$SOURCE" )" && pwd )"
FILENAME=`basename $SOURCE`
echo $DIR/$FILENAME
}
set -e # Get the directory of the current script
function nvm_script_dir(){
echo "$( dirname $(nvm_script_path))"
}
nvm_has() { nvm_has() {
type "$1" > /dev/null 2>&1 type "$1" > /dev/null 2>&1
@ -122,6 +133,7 @@ nvm_do_install() {
# Copies install.sh dir to installation dir # Copies install.sh dir to installation dir
elif [ "~$METHOD" = "~copy" ]; then elif [ "~$METHOD" = "~copy" ]; then
local COPY=true local COPY=true
DIR=`nvm_script_dir`
if [ $DIR = $NVM_DIR ]; then if [ $DIR = $NVM_DIR ]; then
echo "=> install.sh is already in $NVM_DIR" echo "=> install.sh is already in $NVM_DIR"
COPY=false COPY=false