Skip to content

Commit d72b35b

Browse files
committed
Remove external calls to sed using parameter filtering.
POSIX-compliant per http://stackoverflow.com/a/25536935/632724 Relates to #709
1 parent d50a0f4 commit d72b35b

File tree

1 file changed

+8
-7
lines changed

1 file changed

+8
-7
lines changed

nvm.sh

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -307,7 +307,7 @@ nvm_is_valid_version() {
307307
}
308308

309309
nvm_normalize_version() {
310-
echo "$1" | command sed -e 's/^v//' | command awk -F. '{ printf("%d%06d%06d\n", $1,$2,$3); }'
310+
echo "${1#v*}" | command awk -F. '{ printf("%d%06d%06d\n", $1,$2,$3); }'
311311
}
312312

313313
nvm_ensure_version_prefix() {
@@ -324,8 +324,7 @@ nvm_format_version() {
324324
local VERSION
325325
VERSION="$(nvm_ensure_version_prefix "$1")"
326326
if [ "_$(nvm_num_version_groups "$VERSION")" != "_3" ]; then
327-
VERSION="$(echo "$VERSION" | command sed -e 's/\.*$/.0/')"
328-
nvm_format_version "$VERSION"
327+
nvm_format_version "${VERSION%*\.}.0"
329328
else
330329
echo "$VERSION"
331330
fi
@@ -338,10 +337,12 @@ nvm_num_version_groups() {
338337
echo "0"
339338
return
340339
fi
340+
VERSION="${VERSION#v*}"
341+
VERSION="${VERSION%\.}"
341342
local NVM_NUM_DOTS
342-
NVM_NUM_DOTS=$(echo "$VERSION" | command sed -e 's/^v//' | command sed -e 's/\.$//' | command sed -e 's/[^\.]//g')
343+
NVM_NUM_DOTS=$(echo "$VERSION" | command sed -e 's/[^\.]//g')
343344
local NVM_NUM_GROUPS
344-
NVM_NUM_GROUPS=".$NVM_NUM_DOTS"
345+
NVM_NUM_GROUPS=".$NVM_NUM_DOTS" # add extra dot, since it's (n - 1) dots at this point
345346
echo "${#NVM_NUM_GROUPS}"
346347
}
347348

@@ -509,7 +510,7 @@ nvm_strip_iojs_prefix() {
509510
if [ "_$1" = "_$NVM_IOJS_PREFIX" ]; then
510511
echo
511512
else
512-
echo "$1" | command sed "s/^$NVM_IOJS_PREFIX-//"
513+
echo "${1#"$NVM_IOJS_PREFIX"-*}"
513514
fi
514515
}
515516

@@ -564,7 +565,7 @@ nvm_ls() {
564565
local NUM_VERSION_GROUPS
565566
NUM_VERSION_GROUPS="$(nvm_num_version_groups "$PATTERN")"
566567
if [ "_$NUM_VERSION_GROUPS" = "_2" ] || [ "_$NUM_VERSION_GROUPS" = "_1" ]; then
567-
PATTERN="$(echo "$PATTERN" | command sed -e 's/\.*$//g')."
568+
PATTERN="${PATTERN%*\.}."
568569
fi
569570
;;
570571
esac

0 commit comments

Comments
 (0)