Skip to content

Commit

Permalink
Merge pull request #94 from sullivanpt/develop
Browse files Browse the repository at this point in the history
Fixed for node v4
  • Loading branch information
coreybutler committed Sep 30, 2015
2 parents 32b8754 + 0bc5644 commit 09da8d9
Show file tree
Hide file tree
Showing 4 changed files with 70 additions and 40 deletions.
2 changes: 1 addition & 1 deletion nvm.iss
Original file line number Diff line number Diff line change
@@ -1,7 +1,7 @@
#define MyAppName "NVM for Windows"
#define MyAppShortName "nvm"
#define MyAppLCShortName "nvm"
#define MyAppVersion "1.0.6"
#define MyAppVersion "1.1.0"
#define MyAppPublisher "Ecor Ventures, LLC"
#define MyAppURL "http://github.com/coreybutler/nvm"
#define MyAppExeName "nvm.exe"
Expand Down
22 changes: 11 additions & 11 deletions src/nvm.go
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ import (
)

const (
NvmVersion = "1.0.6"
NvmVersion = "1.1.0"
)

type Environment struct {
Expand Down Expand Up @@ -120,11 +120,11 @@ func update() {
}

func CheckVersionExceedsLatest(version string) bool{
content := web.GetRemoteTextFile("http://nodejs.org/dist/latest/SHASUMS.txt")
content := web.GetRemoteTextFile("http://nodejs.org/dist/latest/SHASUMS256.txt")
re := regexp.MustCompile("node-v(.+)+msi")
reg := regexp.MustCompile("node-v|-x.+")
latest := reg.ReplaceAllString(re.FindString(content),"")

if version <= latest {
return false
} else {
Expand Down Expand Up @@ -155,6 +155,14 @@ func install(version string, cpuarch string) {
cpuarch = arch.Validate(cpuarch)
}

// If user specifies "latest" version, find out what version is
if version == "latest" {
content := web.GetRemoteTextFile("http://nodejs.org/dist/latest/SHASUMS256.txt")
re := regexp.MustCompile("node-v(.+)+msi")
reg := regexp.MustCompile("node-v|-x.+")
version = reg.ReplaceAllString(re.FindString(content),"")
}

if CheckVersionExceedsLatest(version) {
fmt.Println("Node.js v"+version+" is not yet released or available.")
return
Expand All @@ -165,14 +173,6 @@ func install(version string, cpuarch string) {
return
}

// If user specifies "latest" version, find out what version is
if version == "latest" {
content := web.GetRemoteTextFile("http://nodejs.org/dist/latest/SHASUMS.txt")
re := regexp.MustCompile("node-v(.+)+msi")
reg := regexp.MustCompile("node-v|-x.+")
version = reg.ReplaceAllString(re.FindString(content),"")
}

// Check to see if the version is already installed
if !node.IsVersionInstalled(env.root,version,cpuarch) {

Expand Down
26 changes: 15 additions & 11 deletions src/nvm/node/node.go
Original file line number Diff line number Diff line change
Expand Up @@ -25,17 +25,21 @@ func GetCurrentVersion() (string, string) {
cmd := exec.Command("node","-p","console.log(process.execPath)")
str, _ := cmd.Output()
file := strings.Trim(regexp.MustCompile("undefined").ReplaceAllString(string(str),"")," \n\r")
bit := arch.Bit(file)
if (bit == "?"){
cmd := exec.Command("node", "-e", "console.log(process.arch)" )
str, err := cmd.Output()
if (string(str) == "x64") {
bit := "64"
} else {
bit := "32"
}
}
return v, bit
bit := arch.Bit(file)
if (bit == "?"){
cmd := exec.Command("node", "-e", "console.log(process.arch)" )
str, err := cmd.Output()
if (err == nil) {
if (string(str) == "x64") {
bit = "64"
} else {
bit = "32"
}
} else {
return v, "Unknown"
}
}
return v, bit
}
return "Unknown",""
}
Expand Down
60 changes: 43 additions & 17 deletions src/nvm/web/web.go
Original file line number Diff line number Diff line change
Expand Up @@ -59,26 +59,42 @@ func GetNodeJS(root string, v string, a string) bool {

a = arch.Validate(a)

url := ""
vpre := ""
vers := strings.Fields(strings.Replace(v,"."," ",-1))
main, _ := strconv.ParseInt(vers[0],0,0)

if a == "32" {
url = "http://nodejs.org/dist/v"+v+"/node.exe"
} else {
if !IsNode64bitAvailable(v) {
fmt.Println("Node.js v"+v+" is only available in 32-bit.")
return false
if main > 0 {
vpre = "win-x86/"
} else {
vpre = ""
}
} else if a == "64" {
if main > 0 {
vpre = "win-x64/"
} else {
vpre = "x64/"
}
url = "http://nodejs.org/dist/v"+v+"/x64/node.exe"
}
fileName := root+"\\v"+v+"\\node"+a+".exe"

url := getNodeUrl ( v, vpre );

fmt.Printf("Downloading node.js version "+v+" ("+a+"-bit)... ")

if Download(url,fileName) {
fmt.Printf("Complete\n")
return true
if url == "" {
//No url should mean this version/arch isn't available
fmt.Println("Node.js v"+v+" " + a + "bit isn't available right now.")
} else {
return false
fileName := root+"\\v"+v+"\\node"+a+".exe"

fmt.Printf("Downloading node.js version "+v+" ("+a+"-bit)... ")

if Download(url,fileName) {
fmt.Printf("Complete\n")
return true
} else {
return false
}
}
return false

}

Expand Down Expand Up @@ -139,10 +155,20 @@ func IsNode64bitAvailable(v string) bool {
return false
}

// TODO: fixme. Assume a 64 bit version exists
return true
}

func getNodeUrl (v string, vpre string) string {
url := "http://nodejs.org/dist/v"+v+"/" + vpre + "/node.exe"
// Check online to see if a 64 bit version exists
res, err := client.Head("http://nodejs.org/dist/v"+v+"/x64/node.exe")
res, err := client.Head( url )
if err != nil {
return false
return ""
}
if res.StatusCode == 200 {
return url
} else {
return ""
}
return res.StatusCode == 200
}

0 comments on commit 09da8d9

Please sign in to comment.