in plugin/step/install/linux/dnf/dnf.go [212:236]
func (s *Step) checkInstalled() error {
chkCtx, chkCtxCancel := context.WithTimeout(context.Background(), time.Duration(s.RPMCheckTimeoutSeconds)*time.Second)
defer chkCtxCancel()
// run rpm -q <package> to get current package
buf := &bytes.Buffer{}
cmd := exec.CommandContext(chkCtx, s.RPMBinary, "-q", 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
}