in plugin/step/install/linux/apt/apt.go [208:232]
func (s *Step) checkInstalled() error {
chkCtx, chkCtxCancel := context.WithTimeout(context.Background(), time.Duration(s.DpkgCheckTimeoutSeconds)*time.Second)
defer chkCtxCancel()
// run `dpkg -W -f "${binary:Package}\t${Version}" chef` to get current package
buf := &bytes.Buffer{}
cmd := exec.CommandContext(chkCtx, s.DPKGBinary, "-W", "-f", "${binary:Package}\t${Version}", s.PackageName)
cmd.Stdin = nil
cmd.Stderr = os.Stderr
cmd.Stdout = buf
if err := cmd.Run(); err != nil {
return err
}
inst := strings.TrimSpace(buf.String())
if s.packageVersionRegex.MatchString(inst) {
return &go2chef.ErrChefAlreadyInstalled{
Installed: inst,
Requested: s.packageVersionRegex.String(),
}
}
return nil
}