mirror of
https://github.com/webinstall/webi-installers.git
synced 2026-02-14 17:49:53 +00:00
101 lines
2.6 KiB
Bash
101 lines
2.6 KiB
Bash
#!/bin/sh
|
|
|
|
# "This is too simple" you say! "Where is the magic!?" you ask.
|
|
# There is no magic!
|
|
# The custom functions for node are here.
|
|
# The generic functions - version checks, download, extract, etc - are here:
|
|
# - https://github.com/webinstall/packages/branches/master/_webi/template.sh
|
|
|
|
set -e
|
|
set -u
|
|
|
|
pkg_cmd_name="node"
|
|
#WEBI_SINGLE=""
|
|
|
|
pkg_get_current_version() {
|
|
# 'node --version' has output in this format:
|
|
# v12.8.0
|
|
# This trims it down to just the version number:
|
|
# 12.8.0
|
|
node --version 2> /dev/null |
|
|
head -n 1 |
|
|
cut -d' ' -f1 |
|
|
sed 's:^v::'
|
|
}
|
|
|
|
pkg_install() {
|
|
# mkdir -p $HOME/.local/opt
|
|
mkdir -p "$(dirname "$pkg_src")"
|
|
|
|
# mv ./node* "$HOME/.local/opt/node-v14.4.0"
|
|
mv ./"$pkg_cmd_name"* "$pkg_src"
|
|
}
|
|
|
|
pkg_link() {
|
|
# rm -f "$HOME/.local/opt/node"
|
|
rm -f "$pkg_dst"
|
|
|
|
# ln -s "$HOME/.local/opt/node-v14.4.0" "$HOME/.local/opt/node"
|
|
ln -s "$pkg_src" "$pkg_dst"
|
|
}
|
|
|
|
pkg_done_message() {
|
|
b_dst="$(fn_sub_home "${pkg_dst}")"
|
|
echo ""
|
|
echo " Installed $(t_pkg 'node') and $(t_pkg 'npm') at $(t_path "${b_dst}/")"
|
|
|
|
if command -v apk > /dev/null; then
|
|
if ! apk info | grep -F 'libstdc++' > /dev/null; then
|
|
echo ""
|
|
echo " $(t_pkg 'WARNING'): $(t_pkg 'libstdc++') is required for $(t_pkg 'node'), but not installed" >&2
|
|
if command -v sudo > /dev/null; then
|
|
cmd_sudo='sudo '
|
|
fi
|
|
_install_webi_essentials_apk "${cmd_sudo}" 'libstdc++'
|
|
fi
|
|
fi
|
|
}
|
|
|
|
_install_webi_essentials_apk() { (
|
|
cmd_sudo="${1}"
|
|
b_pkgs="${2}"
|
|
|
|
#echo " $(t_dim 'Running') $(t_cmd "${cmd_sudo}apk add --no-cache")"
|
|
fn_polite_sudo "${cmd_sudo}" " $(t_cmd "apk add --no-cache ${b_pkgs}")"
|
|
# shellcheck disable=SC2086
|
|
${cmd_sudo} apk add --no-cache ${b_pkgs}
|
|
); }
|
|
|
|
fn_polite_sudo() { (
|
|
a_sudo="${1}"
|
|
a_cmds="${2}"
|
|
|
|
# no sudo needed, so don't ask
|
|
if test -z "${a_sudo}"; then
|
|
return 0
|
|
fi
|
|
|
|
# this is scripted, not user-interactive, continue
|
|
if test -z "${WEBI_TTY}"; then
|
|
return 0
|
|
fi
|
|
|
|
# this is user interactive, ask the user,defaulting to yes
|
|
echo ""
|
|
#shellcheck disable=SC2005 # echo for newline
|
|
printf '%s\n' "$(t_attn 'Use sudo to run the following? [Y/n] ')"
|
|
echo "${a_cmds}"
|
|
read -r b_yes < /dev/tty
|
|
|
|
b_yes="$(
|
|
echo "${b_yes}" |
|
|
tr '[:upper:]' '[:lower:]' |
|
|
tr -d '[:space:]'
|
|
)"
|
|
if test -z "${b_yes}" || test "${b_yes}" = "y" || test "${b_yes}" = "yes"; then
|
|
return 0
|
|
fi
|
|
echo " aborted"
|
|
return 1
|
|
); }
|