diff --git a/src/nvm.go b/src/nvm.go index af5e958c8312c3fb4221bf52951cb79bcfacfbad..e5977d57539c2a4e866a71d93d805011030c3d4b 100644 --- a/src/nvm.go +++ b/src/nvm.go @@ -204,7 +204,13 @@ func install(version string, cpuarch string) { version = reg.ReplaceAllString(re.FindString(content),"") } - version = cleanVersion(version) + // if the user specifies only the major version number then install the latest + // version of the major version number + if len(version) == 1 { + version = findLatestSubVersion(version) + } else { + version = cleanVersion(version) + } if CheckVersionExceedsLatest(version) { fmt.Println("Node.js v"+version+" is not yet released or available.") @@ -350,6 +356,15 @@ func uninstall(version string) { return } +func findLatestSubVersion(version string) string { + url := web.GetFullNodeUrl("latest-v" + version + ".x" + "/SHASUMS256.txt") + content := web.GetRemoteTextFile(url) + re := regexp.MustCompile("node-v(.+)+msi") + reg := regexp.MustCompile("node-v|-x.+") + latest := reg.ReplaceAllString(re.FindString(content), "") + return latest +} + func cleanVersion(version string) string { re := regexp.MustCompile("\\d+.\\d+.\\d+") matched := re.FindString(version)