Add error messages for failed version lookups (when nodejs.org returns partial/no results. Resolves #1064.

This commit is contained in:
Corey Butler
2023-11-22 10:41:38 -06:00
parent 4854ee0832
commit 7af9934eaf
5 changed files with 30 additions and 9 deletions

View File

@@ -8,7 +8,6 @@ require (
github.com/blang/semver v3.5.1+incompatible
github.com/coreybutler/go-fsutil v1.2.0
github.com/coreybutler/go-where v1.0.2
github.com/gonutz/w32/v2 v2.8.1
github.com/olekukonko/tablewriter v0.0.5
github.com/saintfish/chardet v0.0.0-20230101081208-5e3ef4b5456d
golang.org/x/sys v0.1.0

View File

@@ -4,8 +4,6 @@ github.com/coreybutler/go-fsutil v1.2.0 h1:kbm62NSofawglUppEOhpHC3NDf/J7ZpguBirB
github.com/coreybutler/go-fsutil v1.2.0/go.mod h1:B+6ufEkkRZgFwyR2sHEVG9dMzVBU3GbyGyYmCq7YkEk=
github.com/coreybutler/go-where v1.0.2 h1:Omit67KeTtKpvSJjezVxnVD4qMtvlXDlItiKpVCdcl4=
github.com/coreybutler/go-where v1.0.2/go.mod h1:IqV4saJiDXdNJURfTfVRywDHvY1IG5F+GXb2kmnmEe8=
github.com/gonutz/w32/v2 v2.8.1 h1:fTAzhg35iCGWqroImF18+A8GbI3MdXcTYuhvpBpd5CM=
github.com/gonutz/w32/v2 v2.8.1/go.mod h1:MgtHx0AScDVNKyB+kjyPder4xIi3XAcHS6LDDU2DmdE=
github.com/mattn/go-runewidth v0.0.9 h1:Lm995f3rfxdpd6TSmuVCHVb/QhupuXlYr8sCI/QdE+0=
github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI=
github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec=

View File

@@ -2,14 +2,15 @@ package node
import (
"encoding/json"
"fmt"
"io/ioutil"
"nvm/arch"
"nvm/file"
"nvm/web"
"os"
"os/exec"
"regexp"
"strings"
"os"
// "../semver"
"github.com/blang/semver"
@@ -208,13 +209,20 @@ func GetAvailable() ([]string, []string, []string, []string, []string, map[strin
// Check the service to make sure the version is available
text := web.GetRemoteTextFile(url)
if len(text) == 0 {
fmt.Println("Error retrieving version list: \"" + url + "\" returned blank results. This can happen when the remote file is being updated. Please try again in a few minutes.")
os.Exit(0)
}
// Parse
var data = make([]map[string]interface{}, 0)
json.Unmarshal([]byte(text), &data)
err := json.Unmarshal([]byte(text), &data)
if err != nil {
fmt.Printf("Error retrieving versions from \"%s\": %v", url, err.Error())
os.Exit(1)
}
for _, element := range data {
var version = element["version"].(string)[1:]
all = append(all, version)

View File

@@ -1138,8 +1138,12 @@ func checkLocalEnvironment() {
}
} else {
if fileInfo.Mode()&os.ModeSymlink != 0 {
targetPath, _ := os.Readlink(symlink)
targetFileInfo, _ := os.Lstat(targetPath)
targetPath, err := os.Readlink(symlink)
if err != nil {
fmt.Println(err)
}
targetFileInfo, err := os.Lstat(targetPath)
if !targetFileInfo.Mode().IsDir() {
problems = append(problems, "NVM_SYMLINK is a symlink linking to a file instead of a directory.")
@@ -1312,7 +1316,14 @@ func getLatest() string {
}
func getLTS() string {
_, ltsList, _, _, _, _ := node.GetAvailable()
all, ltsList, current, stable, unstable, npm := node.GetAvailable()
fmt.Println(all)
fmt.Println(ltsList)
fmt.Println(current)
fmt.Println(stable)
fmt.Println(unstable)
fmt.Println(npm)
// _, ltsList, _, _, _, _ := node.GetAvailable()
// ltsList has already been numerically sorted
return ltsList[0]
}

View File

@@ -321,6 +321,11 @@ func GetRemoteTextFile(url string) string {
os.Exit(1)
}
if response.StatusCode != 200 {
fmt.Printf("Error retrieving \"%s\": HTTP Status %v\n", url, response.StatusCode)
os.Exit(0)
}
defer response.Body.Close()
contents, readerr := ioutil.ReadAll(response.Body)