mirror of
https://github.com/asdf-vm/asdf-nodejs.git
synced 2024-10-05 23:32:09 +08:00
feat: add commands for managing an internal node-build installation
This commit is contained in:
parent
54113a909b
commit
800e244e78
2
.gitignore
vendored
2
.gitignore
vendored
@ -72,3 +72,5 @@ $RECYCLE.BIN/
|
||||
*.lnk
|
||||
|
||||
# End of https://www.toptal.com/developers/gitignore/api/linux,macos,windows
|
||||
|
||||
.node-build
|
||||
|
32
lib/commands/command-nodebuild.bash
Normal file
32
lib/commands/command-nodebuild.bash
Normal file
@ -0,0 +1,32 @@
|
||||
#! /usr/bin/env bash
|
||||
|
||||
set -eu -o pipefail
|
||||
|
||||
source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/../utils.sh"
|
||||
|
||||
: "${ASDF_NODEJS_NODEBUILD_HOME=$ASDF_NODEJS_PLUGIN_DIR/.node-build}"
|
||||
|
||||
# node-build environment variables being overriden by asdf-nodejs
|
||||
export NODE_BUILD_CACHE_PATH="${NODE_BUILD_CACHE_PATH:-$ASDF_NODEJS_CACHE_DIR/node-build}"
|
||||
|
||||
if [ "$NODEJS_ORG_MIRROR" ]; then
|
||||
export NODE_BUILD_MIRROR_URL="$NODEJS_ORG_MIRROR"
|
||||
fi
|
||||
|
||||
if [ "${ASDF_CONCURRENCY-}" ]; then
|
||||
export MAKE_OPTS="${MAKE_OPTS:-} -j \"$ASDF_CONCURRENCY\""
|
||||
fi
|
||||
|
||||
nodebuild="${ASDF_NODEJS_NODEBUILD:-$ASDF_NODEJS_NODEBUILD_HOME/bin/node-build}"
|
||||
|
||||
if ! [ -x "$nodebuild" ]; then
|
||||
printf "Binary for node-build not found\n"
|
||||
|
||||
if ! [ "$ASDF_NODEJS_NODEBUILD" ]; then
|
||||
printf "Are you sure it was installed? Try running \`asdf %s update-nodebuild\` to do a local update or install\n" "$(plugin_name)"
|
||||
fi
|
||||
|
||||
exit 1
|
||||
fi
|
||||
|
||||
exec "$nodebuild" "$@"
|
28
lib/commands/command-update-nodebuild.bash
Executable file
28
lib/commands/command-update-nodebuild.bash
Executable file
@ -0,0 +1,28 @@
|
||||
#! /usr/bin/env bash
|
||||
|
||||
set -eu -o pipefail
|
||||
|
||||
source "$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)/../utils.sh"
|
||||
|
||||
: "${ASDF_NODEJS_NODEBUILD_HOME=$ASDF_NODEJS_PLUGIN_DIR/.node-build}"
|
||||
: "${ASDF_NODEJS_NODEBUILD_REPOSITORY=https://github.com/nodenv/node-build.git}"
|
||||
|
||||
ensure_updated_project() {
|
||||
local pull_exit_code=
|
||||
|
||||
if ! [ -d "$ASDF_NODEJS_NODEBUILD_HOME" ]; then
|
||||
printf "Cloning node-build...\n"
|
||||
git clone "$ASDF_NODEJS_NODEBUILD_REPOSITORY" "$ASDF_NODEJS_NODEBUILD_HOME"
|
||||
else
|
||||
printf "Trying to update node-build...\n"
|
||||
git -C "$ASDF_NODEJS_NODEBUILD_HOME" pull origin master || pull_exit_code=$?
|
||||
|
||||
if [ "$pull_exit_code" ]; then
|
||||
printf "ERROR: Updating the node-build repository exited with code %s\n" "$pull_exit_code"
|
||||
printf "Please check if the git repository at %s doesn't have any changes or anything that might not allow a git pull\n" "$ASDF_NODEJS_NODEBUILD_REPOSITORY"
|
||||
exit 1
|
||||
fi
|
||||
fi
|
||||
}
|
||||
|
||||
ensure_updated_project
|
10
lib/utils.sh
10
lib/utils.sh
@ -10,15 +10,17 @@ fi
|
||||
|
||||
ASDF_NODEJS_KEYRING=asdf-nodejs.gpg
|
||||
|
||||
ASDF_NODEJS_PLUGIN_NAME="$(basename "$(dirname "$(dirname "$0")")")"
|
||||
export ASDF_NODEJS_PLUGIN_DIR=$(cd "$(dirname "${BASH_SOURCE[0]}")/.." && pwd)
|
||||
|
||||
# TODO: Replace with an asdf variable once asdf starts providing the plugin name
|
||||
# as a variable
|
||||
export ASDF_NODEJS_PLUGIN_NAME=$(basename "$ASDF_NODEJS_PLUGIN_DIR")
|
||||
plugin_name() {
|
||||
printf "%s\n" "$ASDF_NODEJS_PLUGIN_NAME"
|
||||
}
|
||||
|
||||
ASDF_DIR="${ASDF_DIR:-$HOME/.asdf}"
|
||||
export ASDF_NODEJS_PLUGIN_NAME ASDF_DIR
|
||||
export ASDF_NODEJS_CACHE_DIR="${ASDF_DATA_DIR:-${ASDF_DIR:-$HOME/.asdf}}/tmp/$ASDF_NODEJS_PLUGIN_NAME/cache"
|
||||
export ASDF_DIR="${ASDF_DIR:-$HOME/.asdf}"
|
||||
|
||||
die() {
|
||||
>&2 echo "$@"
|
||||
@ -61,7 +63,7 @@ filter_version_candidates() {
|
||||
done
|
||||
}
|
||||
|
||||
versions_cache_dir="${ASDF_DATA_DIR:-${ASDF_HOME:-$HOME/.asdf}}/tmp/$(plugin_name)/cache"
|
||||
versions_cache_dir="$ASDF_NODEJS_CACHE_DIR/versions-tab"
|
||||
mkdir -p "$versions_cache_dir"
|
||||
|
||||
etag_file="$versions_cache_dir/etag"
|
||||
|
Loading…
Reference in New Issue
Block a user