mirror of https://github.com/containers/podman.git
Add support for pacman package version query
- refactor package query logic to be package manager agnostic. - `pacman -Qo` is the equivalent to `rpm -qf` [1]. [1] https://wiki.archlinux.org/index.php/Pacman/Rosetta#Querying_specific_packages Signed-off-by: xatier <xatierlike@gmail.com>
This commit is contained in:
parent
3ac83bf611
commit
b6f5163460
|
@ -142,29 +142,37 @@ func JSONDeepCopy(from, to interface{}) error {
|
||||||
return json.Unmarshal(tmp, to)
|
return json.Unmarshal(tmp, to)
|
||||||
}
|
}
|
||||||
|
|
||||||
func dpkgVersion(path string) string {
|
func queryPackageVersion(cmdArg ...string) string {
|
||||||
output := unknownPackage
|
output := unknownPackage
|
||||||
cmd := exec.Command("/usr/bin/dpkg", "-S", path)
|
if 1 < len(cmdArg) {
|
||||||
|
cmd := exec.Command(cmdArg[0], cmdArg[1:]...)
|
||||||
if outp, err := cmd.Output(); err == nil {
|
if outp, err := cmd.Output(); err == nil {
|
||||||
output = string(outp)
|
output = string(outp)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
return strings.Trim(output, "\n")
|
return strings.Trim(output, "\n")
|
||||||
}
|
}
|
||||||
|
|
||||||
func rpmVersion(path string) string {
|
func pacmanVersion(path string) string {
|
||||||
output := unknownPackage
|
return queryPackageVersion("/usr/bin/pacman", "-Qo", path)
|
||||||
cmd := exec.Command("/usr/bin/rpm", "-q", "-f", path)
|
|
||||||
if outp, err := cmd.Output(); err == nil {
|
|
||||||
output = string(outp)
|
|
||||||
}
|
}
|
||||||
return strings.Trim(output, "\n")
|
|
||||||
|
func dpkgVersion(path string) string {
|
||||||
|
return queryPackageVersion("/usr/bin/dpkg", "-S", path)
|
||||||
|
}
|
||||||
|
|
||||||
|
func rpmVersion(path string) string {
|
||||||
|
return queryPackageVersion("/usr/bin/rpm", "-q", "-f", path)
|
||||||
}
|
}
|
||||||
|
|
||||||
func packageVersion(program string) string {
|
func packageVersion(program string) string {
|
||||||
if out := rpmVersion(program); out != unknownPackage {
|
if out := rpmVersion(program); out != unknownPackage {
|
||||||
return out
|
return out
|
||||||
}
|
}
|
||||||
return dpkgVersion(program)
|
if out := dpkgVersion(program); out != unknownPackage {
|
||||||
|
return out
|
||||||
|
}
|
||||||
|
return pacmanVersion(program)
|
||||||
}
|
}
|
||||||
|
|
||||||
func programVersion(mountProgram string) (string, error) {
|
func programVersion(mountProgram string) (string, error) {
|
||||||
|
|
Loading…
Reference in New Issue