feat: add commands for managing an internal node-build installation

This commit is contained in:
Augusto Moura 2021-11-23 21:23:30 -03:00
parent 54113a909b
commit 800e244e78
No known key found for this signature in database
GPG Key ID: 67F85AF470AE27DA
4 changed files with 68 additions and 4 deletions

2
.gitignore vendored
View File

@ -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

View 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" "$@"

View 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

View File

@ -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"