HEX
Server: Apache/2.2.34 (Unix) mod_fastcgi/mod_fastcgi-SNAP-0910052141
System: Linux Kou-Etsu-Dou 4.4.59+ #25556 SMP PREEMPT Thu Mar 4 18:03:46 CST 2021 x86_64
User: hosam (1026)
PHP: 7.2.29
Disabled: NONE
Upload Files
File: //var/packages/Node.js_v8/scripts/common
#!/bin/sh
# Copyright (C) 2000-2017 Synology Inc. All rights reserved.

USR_BIN_FILES="node"
NPM_DIR="/usr/local/lib/node_modules/npm"
NODE_JS_PKG="Node.js_v8"
PKG_DIR="/var/packages/${NODE_JS_PKG}/target"
NODE_VERSION="8.9.4"
NVM_PREFIX_DIR="/usr/local/node/nvm"
NVM_VERSION_DIR="$NVM_PREFIX_DIR/versions/${NODE_VERSION}"
NODEJS_ETC_DIR="/usr/syno/etc/packages/Node.js"
PREFERENCE_CONF="$NODEJS_ETC_DIR/.version.pref"
LOCAL_NPM="$PKG_DIR/usr/local/lib/node_modules/npm/bin/npm-cli.js"

_REMOVE_INVALID_VERSIONS()
{
	local i;
	for i in "$NVM_PREFIX_DIR/versions/"*; do
		if [ -e "$i/bin/node" ] && "$i/bin/node" -v | grep -q "v$(basename "$i")"; then
			continue;
		fi
		rm "$i/bin/node"
		rmdir "$i/bin" "$i"
	done
}

_CHECK_AND_LINK_FILE()
{
	local LINK=$NVM_VERSION_DIR/$1
	local LINK_TARGET="`realpath ${PKG_DIR}/usr/local/$1`"
	local LINK_BASE=`dirname $LINK`

	if [ ! -d "$LINK_BASE" ]; then
		mkdir -p $LINK_BASE
	fi

	if [ -e "$LINK" ]; then
		rm -rf $LINK
	fi

	if [ ! -e "$LINK" ]; then
		ln -sf $LINK_TARGET $LINK
	fi
}

_CHECK_AND_REMOVE()
{
	[ -L /usr/local/$1 ] && rm /usr/local/$1
}

_EXEC_LINKING()
{
	local file
	for file in $USR_BIN_FILES; do
		$1 "bin/$file"
	done
}

DO_LINK()
{
	_REMOVE_INVALID_VERSIONS
	_EXEC_LINKING _CHECK_AND_LINK_FILE
}

DO_REMOVE()
{
	_EXEC_LINKING _CHECK_AND_REMOVE
}

GET_STATUS()
{
	[ -x "/usr/local/bin/node" ] && [ -x "${PKG_DIR}/usr/local/bin/node" ] || return 150
	return 0
}

USE_LATEST_NODE()
{
	LATEST_VER=$(/usr/local/bin/nvm latest)
	[ -z "$(/usr/local/bin/nvm list | grep $LATEST_VER)" ] && return 1
	/usr/local/bin/nvm set $LATEST_VER
	return $?
}

USE_STABLE_NODE()
{
	STABLE_VER=$(/usr/local/bin/nvm stable)
	[ -z "$(/usr/local/bin/nvm list | grep $STABLE_VER)" ] && return 1
	/usr/local/bin/nvm set $STABLE_VER
	return $?
}

USE_PREFERENCE_NODE()
{
	[ -f "$PREFERENCE_CONF" ] && PREFER_VERSION=$(cat $PREFERENCE_CONF) || return 1
	/usr/local/bin/nvm set $PREFER_VERSION
	return $?
}

SET_DEFAULT_NODE()
{
	USE_PREFERENCE_NODE
	[ 0 -eq "$?" ] && return
	USE_STABLE_NODE
	[ 0 -eq "$?" ] && return
	USE_LATEST_NODE
	return $?
}

UPDATE_NPM()
{
	if [ ! -d $NPM_DIR ]; then
		mkdir -p /usr/local/lib/node_modules
		cp -rf $PKG_DIR/$NPM_DIR $NPM_DIR
		ln -sf $NPM_DIR/bin/npm-cli.js /usr/local/bin/npm
		return
	fi

	GLOBAL_NPM_VER=$(node /usr/local/bin/npm -v)
	LOCAL_NPM_VER=$(node $LOCAL_NPM -v)
	for i in 1 2 3; do
		G_V=$(echo $GLOBAL_NPM_VER | cut -d"." -f$i)
		L_V=$(echo $LOCAL_NPM_VER | cut -d"." -f$i)
		case $(($G_V-$L_V)) in
			0) ;;
			-[0-9]*) rm -rf $NPM_DIR && cp -rf $PKG_DIR/$NPM_DIR $NPM_DIR; return ;;
			 [0-9]*) return ;;
		esac
	done
}