Просмотр исходного кода

We're parsing out rar's version information.

Steve Thielemann 1 день назад
Родитель
Сommit
f0391790c3
1 измененных файлов с 31 добавлено и 3 удалено
  1. 31 3
      rar-upgrade.go

+ 31 - 3
rar-upgrade.go

@@ -263,10 +263,38 @@ func FindRar() (string, error) {
 
 func RarVersion() string {
 	output, _ := exec.Command("rar").Output()
-	fmt.Printf("RAR:\n%s\n", output)
+	// fmt.Printf("RAR:\n%s\n", output)
 	buffer := bytes.NewBuffer(output)
-	line, _ := buffer.ReadString('\n')
-	line, _ = buffer.ReadString('\n')
+	line, err := buffer.ReadString('\n')
+	if err != nil {
+		return ""
+	}
+
+	line, _ = strings.CutSuffix(line, "\n")
+
+	for len(line) == 0 {
+		// First line is blank.
+		line, err = buffer.ReadString('\n')
+		if err != nil {
+			return ""
+		}
+		line, _ = strings.CutSuffix(line, "\n")
+	}
+
+	fmt.Printf("RAR: [%s]\n", line)
+	if line != "" {
+		rarver, _, found := strings.Cut(line, "   ")
+		if found {
+			line = rarver
+		}
+	}
+
+	// Ok, we should have something like "RAR 7.10"
+	_, version, found := strings.Cut(line, " ")
+	if found {
+		return version
+	}
+
 	return line
 }