Skip to content

Commit

Permalink
update
Browse files Browse the repository at this point in the history
  • Loading branch information
moqsien committed May 17, 2024
1 parent bbf480e commit ad6f584
Showing 1 changed file with 74 additions and 9 deletions.
83 changes: 74 additions & 9 deletions internal/shell/migrate.go
Original file line number Diff line number Diff line change
Expand Up @@ -57,8 +57,10 @@ func (s *ShellMigrator) fishLineToline(line string) (newLine string) {
envPrefix := "set --global "
if strings.HasPrefix(line, pathPrefix) {
p := strings.TrimSpace(strings.ReplaceAll(line, pathPrefix, ""))
if p != "" {
newLine = fmt.Sprintf("export PATH=%s:PATH", p)
pList := strings.Split(p, " ")
if len(pList) > 0 {
p = strings.Join(pList, ":")
newLine = fmt.Sprintf("export PATH=%s:$PATH", p)
}
} else if strings.HasPrefix(line, envPrefix) {
envStr := strings.TrimSpace(strings.ReplaceAll(line, envPrefix, ""))
Expand All @@ -77,13 +79,9 @@ func (s *ShellMigrator) lineToFishLine(line string) (newLine string) {
line = strings.TrimSpace(strings.ReplaceAll(line, pathPrefix, ""))
line = strings.TrimSuffix(line, ":$PATH")
pList := strings.Split(line, ":")
sList := []string{}
for _, p := range pList {
if p != "" {
sList = append(sList, fmt.Sprintf("fish_add_path --global %s", p))
}
if len(pList) > 0 {
newLine = fmt.Sprintf("fish_add_path --global %s", strings.Join(pList, " "))
}
newLine = strings.Join(sList, "\n")
} else if strings.HasPrefix(line, envPrefix) && !strings.Contains(line, "$PATH") {
line = strings.TrimSpace(strings.ReplaceAll(line, envPrefix, ""))
eList := strings.Split(line, "=")
Expand All @@ -94,6 +92,68 @@ func (s *ShellMigrator) lineToFishLine(line string) (newLine string) {
return
}

func (s *ShellMigrator) filterLine(line string) bool {
if line == "" {
return false
}

installPath := conf.GetVersionManagerWorkDir()
installBinPath := filepath.Join(installPath, "bin")

if line == fmt.Sprintf("fish_add_path --global %s", installPath) {
return false
}

if line == fmt.Sprintf("fish_add_path --global %s", installBinPath) {
return false
}

if line == fmt.Sprintf("fish_add_path --global %s", sh.FormatPathString(installPath)) {
return false
}

if line == fmt.Sprintf("fish_add_path --global %s", sh.FormatPathString(installBinPath)) {
return false
}

if line == fmt.Sprintf("fish_add_path --global %s %s", installPath, installBinPath) {
return false
}

if line == fmt.Sprintf("fish_add_path --global %s %s", sh.FormatPathString(installPath), sh.FormatPathString(installBinPath)) {
return false
}

if !strings.HasPrefix(line, "export") {
return true
}

if line == fmt.Sprintf("export PATH=%s:$PATH", installPath) {
return false
}

if line == fmt.Sprintf("export PATH=%s:$PATH", installBinPath) {
return false
}

if line == fmt.Sprintf("export PATH=%s:$PATH", sh.FormatPathString(installPath)) {
return false
}

if line == fmt.Sprintf("export PATH=%s:$PATH", sh.FormatPathString(installBinPath)) {
return false
}

if line == fmt.Sprintf("export PATH=%s:%s:$PATH", sh.FormatPathString(installPath), sh.FormatPathString(installBinPath)) {
return false
}

if line == fmt.Sprintf("export PATH=%s:%s:$PATH", installPath, installBinPath) {
return false
}
return true
}

func (s *ShellMigrator) handle(oldFile string, lineHandler func(string) string) {
oldData, _ := os.ReadFile(oldFile)
oldContent := strings.TrimSpace(string(oldData))
Expand All @@ -105,7 +165,12 @@ func (s *ShellMigrator) handle(oldFile string, lineHandler func(string) string)
lines := strings.Split(oldContent, "\n")
for _, line := range lines {
l := lineHandler(line)
if strings.HasPrefix(l, "export ") && !strings.Contains(newContent, l) {

if !s.filterLine(l) {
continue
}

if l != "" && !strings.Contains(newContent, l) {
newContent = newContent + "\n" + l
}
}
Expand Down

0 comments on commit ad6f584

Please sign in to comment.