mirror of
https://github.com/asdf-vm/asdf-nodejs.git
synced 2024-10-06 07:42:08 +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
|
*.lnk
|
||||||
|
|
||||||
# End of https://www.toptal.com/developers/gitignore/api/linux,macos,windows
|
# 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_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
|
# TODO: Replace with an asdf variable once asdf starts providing the plugin name
|
||||||
# as a variable
|
# as a variable
|
||||||
|
export ASDF_NODEJS_PLUGIN_NAME=$(basename "$ASDF_NODEJS_PLUGIN_DIR")
|
||||||
plugin_name() {
|
plugin_name() {
|
||||||
printf "%s\n" "$ASDF_NODEJS_PLUGIN_NAME"
|
printf "%s\n" "$ASDF_NODEJS_PLUGIN_NAME"
|
||||||
}
|
}
|
||||||
|
|
||||||
ASDF_DIR="${ASDF_DIR:-$HOME/.asdf}"
|
export ASDF_NODEJS_CACHE_DIR="${ASDF_DATA_DIR:-${ASDF_DIR:-$HOME/.asdf}}/tmp/$ASDF_NODEJS_PLUGIN_NAME/cache"
|
||||||
export ASDF_NODEJS_PLUGIN_NAME ASDF_DIR
|
export ASDF_DIR="${ASDF_DIR:-$HOME/.asdf}"
|
||||||
|
|
||||||
die() {
|
die() {
|
||||||
>&2 echo "$@"
|
>&2 echo "$@"
|
||||||
@ -61,7 +63,7 @@ filter_version_candidates() {
|
|||||||
done
|
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"
|
mkdir -p "$versions_cache_dir"
|
||||||
|
|
||||||
etag_file="$versions_cache_dir/etag"
|
etag_file="$versions_cache_dir/etag"
|
||||||
|
Loading…
Reference in New Issue
Block a user