mirror of
https://github.com/asdf-vm/asdf-nodejs.git
synced 2024-10-06 07:42:08 +08:00
929686f880
also add support for lts aliases, giving it's trivial to implement after processing the tab also get better error messages for missing versions
78 lines
2.0 KiB
Bash
78 lines
2.0 KiB
Bash
# Helper functions
|
|
|
|
# When in China, set $NODEJS_ORG_MIRROR:
|
|
# export NODEJS_ORG_MIRROR=https://npm.taobao.org/mirrors/node/
|
|
NODEJS_ORG_MIRROR="${NODEJS_ORG_MIRROR:-https://nodejs.org/dist/}"
|
|
if [ ${NODEJS_ORG_MIRROR: -1} != / ]
|
|
then
|
|
NODEJS_ORG_MIRROR=$NODEJS_ORG_MIRROR/
|
|
fi
|
|
|
|
# TODO: Replace with an asdf variable once asdf starts providing the plugin name
|
|
# as a variable
|
|
plugin_name() {
|
|
basename "$(dirname "$(dirname "$0")")"
|
|
}
|
|
|
|
die() {
|
|
>&2 echo "$@"
|
|
exit 1
|
|
}
|
|
|
|
ASDF_NODEJS_KEYRING=asdf-nodejs.gpg
|
|
|
|
# TODO: implement a cache for the tab. The api supports If-None-Match and
|
|
# If-Modified-Since HTTP headers
|
|
print_index_tab() {
|
|
curl --silent "${NODEJS_ORG_MIRROR}index.tab"
|
|
}
|
|
|
|
# Print all alias and correspondent versions in the format "$alias\t$version"
|
|
# Also prints versions as a alias of itself. Eg: "v10.0.0 v10.0.0"
|
|
filter_version_candidates() {
|
|
awk -F'\t' '
|
|
# First line is the headers for the columns
|
|
NR == 1 {
|
|
for (i = 1; i <= NF; i++) {
|
|
cols[cols_size++] = $i
|
|
}
|
|
|
|
# Skip first line because we got all the information already
|
|
next
|
|
}
|
|
|
|
# Add a global variable `record` with the current line version
|
|
# using the headers as fields
|
|
{
|
|
for (i = 1; i < NF; i++) {
|
|
record[cols[i - 1]] = $i
|
|
}
|
|
}
|
|
|
|
{
|
|
# Version without the `v` prefix
|
|
vers = substr(record["version"], 2)
|
|
|
|
# We need to check if the lts alias is in a variable because multiple versions
|
|
# have the same alias, we want to print only the most recent
|
|
if (record["lts"] != "-") {
|
|
|
|
# Check if lts is already printed, if not print it as version candidate and
|
|
# put it at the aliases map
|
|
if (!("lts" in aliases)) {
|
|
aliases["lts"] = vers
|
|
print "lts\t" vers
|
|
}
|
|
|
|
lts_alias = "lts/" tolower(record["lts"])
|
|
if (!(lts_alias in aliases)) {
|
|
aliases[lts_alias] = vers
|
|
print lts_alias "\t" vers
|
|
}
|
|
}
|
|
|
|
print vers "\t" vers
|
|
}
|
|
'
|
|
}
|