|
@@ -4,6 +4,7 @@ import (
|
|
|
"embed"
|
|
|
"log"
|
|
|
"os"
|
|
|
+ "path/filepath"
|
|
|
"strings"
|
|
|
)
|
|
|
|
|
@@ -11,14 +12,20 @@ import (
|
|
|
var libEmbed embed.FS
|
|
|
|
|
|
func updatePath(dir string) {
|
|
|
+ tmpDir := filepath.Dir(dir)
|
|
|
pathComponents := strings.Split(os.Getenv("PATH"), ";")
|
|
|
+ i := 0
|
|
|
for _, comp := range pathComponents {
|
|
|
- // Case incensitive
|
|
|
- if strings.ToLower(comp) == strings.ToLower(dir) {
|
|
|
+ if strings.EqualFold(comp, dir) {
|
|
|
return
|
|
|
}
|
|
|
+ // Remove any other prior paths to our temp dir
|
|
|
+ if !strings.HasPrefix(strings.ToLower(comp), strings.ToLower(tmpDir)) {
|
|
|
+ pathComponents[i] = comp
|
|
|
+ i++
|
|
|
+ }
|
|
|
}
|
|
|
- newPath := strings.Join(append(pathComponents, dir), ";")
|
|
|
+ newPath := strings.Join(append([]string{dir}, pathComponents...), ";")
|
|
|
log.Printf("Updating PATH to %s", newPath)
|
|
|
os.Setenv("PATH", newPath)
|
|
|
}
|