mirror of
https://github.com/nvm-sh/nvm.git
synced 2025-05-15 08:31:51 +00:00
Put symlink dereferencing loop into function for copy installation
This commit is contained in:
parent
736aacf4e1
commit
ed29fa9bd8
24
install.sh
24
install.sh
@ -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
|
||||||
while [ -h "$SOURCE" ]; do # resolve $SOURCE until the file is no longer a symlink
|
function nvm_script_path(){
|
||||||
|
SOURCE=$0
|
||||||
|
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
|
||||||
|
Loading…
Reference in New Issue
Block a user