mirror of https://github.com/kubernetes/kops.git
Split dpkg-query fields with a tab
We were previously splitting on a space which depended on Status-Abbrev only using 1 or 2 of its 3 character width. When Status-Abbrev has 3 non-whitespace characters the parsing fails. Now we use tab delimiters and trim off any whitespace after splitting.
This commit is contained in:
parent
12931dd99d
commit
24fb33dad3
|
@ -145,7 +145,7 @@ func (e *Package) Find(c *fi.NodeupContext) (*Package, error) {
|
||||||
}
|
}
|
||||||
|
|
||||||
func (e *Package) findDpkg(c *fi.NodeupContext) (*Package, error) {
|
func (e *Package) findDpkg(c *fi.NodeupContext) (*Package, error) {
|
||||||
args := []string{"dpkg-query", "-f", "${db:Status-Abbrev}${Version}\\n", "-W", e.Name}
|
args := []string{"dpkg-query", "-f", "${db:Status-Abbrev}\\t${Version}\\n", "-W", e.Name}
|
||||||
human := strings.Join(args, " ")
|
human := strings.Join(args, " ")
|
||||||
|
|
||||||
klog.V(2).Infof("Listing installed packages: %s", human)
|
klog.V(2).Infof("Listing installed packages: %s", human)
|
||||||
|
@ -166,12 +166,12 @@ func (e *Package) findDpkg(c *fi.NodeupContext) (*Package, error) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
|
||||||
tokens := strings.Split(line, " ")
|
tokens := strings.Split(line, "\t")
|
||||||
if len(tokens) != 2 {
|
if len(tokens) != 2 {
|
||||||
return nil, fmt.Errorf("error parsing dpkg-query line %q", line)
|
return nil, fmt.Errorf("error parsing dpkg-query line %q", line)
|
||||||
}
|
}
|
||||||
state := tokens[0]
|
state := strings.TrimSpace(tokens[0])
|
||||||
version := tokens[1]
|
version := strings.TrimSpace(tokens[1])
|
||||||
|
|
||||||
switch state {
|
switch state {
|
||||||
case "ii":
|
case "ii":
|
||||||
|
|
Loading…
Reference in New Issue