130 lines
3.2 KiB
Bash
Executable File
130 lines
3.2 KiB
Bash
Executable File
#!/usr/bin/env bash
|
|
|
|
SCRIPT_PATH=$( cd "$(dirname "$0")" ; pwd -P )
|
|
|
|
IMAGE_NAME="yoursystemcz/node-interpretter"
|
|
IMAGE_VERSION="latest"
|
|
|
|
SERVICE_NAME="node-interpretter"
|
|
|
|
|
|
source ${SCRIPT_PATH}/../common.shinc
|
|
|
|
#
|
|
# Project specific variables
|
|
#
|
|
|
|
MOUNT_PATHS=()
|
|
RESTART=0
|
|
|
|
source ${SCRIPT_PATH}/shared.env.shinc 2> /dev/null
|
|
source ${SCRIPT_PATH}/env.shinc 2> /dev/null
|
|
|
|
|
|
__createLink() {
|
|
local continue
|
|
local hostPath="${1}"
|
|
local binaryLink="${2}"
|
|
|
|
if [[ -f "${hostPath}" || -L "${hostPath}" ]]; then
|
|
__warn "There is already a ${hostPath}, are you sure you want to replace it? [y/(n)]:"
|
|
read continue
|
|
if [[ "${continue}" == "y" || "${continue}" == "Y" ]]; then
|
|
__msg "Linking node binary at ${hostPath}"
|
|
sudo rm -f "${hostPath}"
|
|
sudo ln -s "${SCRIPT_PATH}/bin/${binaryLink}" "${hostPath}"
|
|
[[ $? -ne 0 ]] && __err "Could not link ${binaryLink} binary at ${hostPath}" && return 137
|
|
fi
|
|
else
|
|
__msg "Linking node binary at ${hostPath}"
|
|
sudo ln -s "${SCRIPT_PATH}/bin/${binaryLink}" "${hostPath}"
|
|
fi
|
|
}
|
|
|
|
__deleteLink() {
|
|
local hostPath="${1}"
|
|
local binaryLink="${2}"
|
|
|
|
if [[ -L "${hostPath}" ]]; then
|
|
local linkName=$(readlink -f "${hostPath}")
|
|
if [[ $? -eq 0 && "${linkName}" == "${SCRIPT_PATH}/bin/${binaryLink}" ]]; then
|
|
__warn "Removing link at ${hostPath}"
|
|
sudo rm -f ${hostPath}
|
|
fi
|
|
fi
|
|
}
|
|
|
|
__createLinks() {
|
|
__createLink "${NODE_HOST_PATH}" node
|
|
__createLink "${NODE_HOST_PATH}js" node
|
|
__createLink "${NPM_HOST_PATH}" npm
|
|
__createLink "${NPX_HOST_PATH}" npx
|
|
__createLink "${YARN_HOST_PATH}" yarn
|
|
__createLink "${YARNPKG_HOST_PATH}" yarnpkg
|
|
}
|
|
|
|
__deleteLinks() {
|
|
__deleteLink "${NODE_HOST_PATH}" node
|
|
__deleteLink "${NODE_HOST_PATH}js" node
|
|
__deleteLink "${NPM_HOST_PATH}" npm
|
|
__deleteLink "${NPX_HOST_PATH}" npx
|
|
__deleteLink "${YARN_HOST_PATH}" yarn
|
|
__deleteLink "${YARNPKG_HOST_PATH}" yarnpkg
|
|
}
|
|
|
|
init() {
|
|
__createLinks
|
|
|
|
local mountPaths=""
|
|
[[ ${#MOUNT_PATHS[@]} -eq 0 ]] && __err "No MOUNT_PATHS were specified. Please provide these in an .env.shinc file at ${SCRIPT_PATH}/.env.shinc" && return 137
|
|
for mountPath in ${MOUNT_PATHS[@]}; do
|
|
mountPaths="${mountPaths} -v ${mountPath}"
|
|
done
|
|
|
|
args="${mountPaths} -v ${SCRIPT_PATH}/configs/${SERVICE_NAME/plex_/}:/config"
|
|
|
|
if [[ ${RESTART} -eq 1 ]]; then
|
|
args="${args} --restart=always"
|
|
fi
|
|
|
|
docker create \
|
|
--name ${SERVICE_NAME} \
|
|
--user $(id -u) \
|
|
-v ${SSH_KEY}:/home/node/.ssh/${SSH_KEY_NAME} \
|
|
-v ${KNOWN_HOSTS}:/home/node/.ssh/known_hosts \
|
|
-v npm-cache:/home/node/.npm \
|
|
-e TZ=Europe/Prague \
|
|
${args} \
|
|
--net host \
|
|
--entrypoint /cmd \
|
|
${IMAGE_NAME}:${IMAGE_VERSION}
|
|
|
|
[[ $? -ne 0 ]] && __err "Could not create the docker container" && return 137
|
|
|
|
docker start ${SERVICE_NAME} && \
|
|
docker exec --user 0 ${SERVICE_NAME} mkdir -p /usr/local/lib/node_modules && \
|
|
docker exec --user 0 ${SERVICE_NAME} chown $(id -u) /usr/local/lib/node_modules && \
|
|
docker exec --user 0 ${SERVICE_NAME} chown $(id -u) /usr/local/bin
|
|
}
|
|
|
|
remove() {
|
|
stop
|
|
|
|
__msg "Removing container... " 0 no
|
|
STATUS=$(docker rm ${SERVICE_NAME} 2>&1)
|
|
if [[ $? -ne 0 ]]; then
|
|
__err "${STATUS}"
|
|
return 1
|
|
else
|
|
__success "[ok]"
|
|
fi
|
|
|
|
__deleteLinks
|
|
|
|
return 0
|
|
}
|
|
|
|
"$@"
|
|
|
|
exit $?
|