mirror of
https://github.com/tailscale/tailscale.git
synced 2025-01-08 09:07:44 +00:00
clientupdate: handle multiple versions in "apk info tailscale" output (#11310)
The package info output can list multiple package versions, and not in descending order. Find the newest version in the output, instead of the first one. Fixes #11309 Signed-off-by: Andrew Lytvynov <awly@tailscale.com>
This commit is contained in:
parent
097c5ed927
commit
23fbf0003f
@ -665,6 +665,7 @@ func (up *Updater) updateAlpineLike() (err error) {
|
|||||||
|
|
||||||
func parseAlpinePackageVersion(out []byte) (string, error) {
|
func parseAlpinePackageVersion(out []byte) (string, error) {
|
||||||
s := bufio.NewScanner(bytes.NewReader(out))
|
s := bufio.NewScanner(bytes.NewReader(out))
|
||||||
|
var maxVer string
|
||||||
for s.Scan() {
|
for s.Scan() {
|
||||||
// The line should look like this:
|
// The line should look like this:
|
||||||
// tailscale-1.44.2-r0 description:
|
// tailscale-1.44.2-r0 description:
|
||||||
@ -676,7 +677,13 @@ func parseAlpinePackageVersion(out []byte) (string, error) {
|
|||||||
if len(parts) < 3 {
|
if len(parts) < 3 {
|
||||||
return "", fmt.Errorf("malformed info line: %q", line)
|
return "", fmt.Errorf("malformed info line: %q", line)
|
||||||
}
|
}
|
||||||
return parts[1], nil
|
ver := parts[1]
|
||||||
|
if cmpver.Compare(ver, maxVer) == 1 {
|
||||||
|
maxVer = ver
|
||||||
|
}
|
||||||
|
}
|
||||||
|
if maxVer != "" {
|
||||||
|
return maxVer, nil
|
||||||
}
|
}
|
||||||
return "", errors.New("tailscale version not found in output")
|
return "", errors.New("tailscale version not found in output")
|
||||||
}
|
}
|
||||||
|
@ -251,6 +251,29 @@ func TestParseAlpinePackageVersion(t *testing.T) {
|
|||||||
out: "",
|
out: "",
|
||||||
wantErr: true,
|
wantErr: true,
|
||||||
},
|
},
|
||||||
|
{
|
||||||
|
desc: "multiple versions",
|
||||||
|
out: `
|
||||||
|
tailscale-1.54.1-r0 description:
|
||||||
|
The easiest, most secure way to use WireGuard and 2FA
|
||||||
|
|
||||||
|
tailscale-1.54.1-r0 webpage:
|
||||||
|
https://tailscale.com/
|
||||||
|
|
||||||
|
tailscale-1.54.1-r0 installed size:
|
||||||
|
34 MiB
|
||||||
|
|
||||||
|
tailscale-1.58.2-r0 description:
|
||||||
|
The easiest, most secure way to use WireGuard and 2FA
|
||||||
|
|
||||||
|
tailscale-1.58.2-r0 webpage:
|
||||||
|
https://tailscale.com/
|
||||||
|
|
||||||
|
tailscale-1.58.2-r0 installed size:
|
||||||
|
35 MiB
|
||||||
|
`,
|
||||||
|
want: "1.58.2",
|
||||||
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, tt := range tests {
|
for _, tt := range tests {
|
||||||
|
Loading…
x
Reference in New Issue
Block a user