Skip to content

Commit 06dd00b

Browse files
committed
feat(packages): Identify all packages installed
1 parent d5e5a76 commit 06dd00b

File tree

1 file changed

+29
-2
lines changed

1 file changed

+29
-2
lines changed

main.go

Lines changed: 29 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ package main
33
import (
44
"fmt"
55
"os"
6+
"os/exec"
67
"runtime"
78
"strings"
89
)
@@ -21,9 +22,10 @@ func main() {
2122
if(distro=="unknown" && base_distro=="unknown"){fmt.Println("Failed to fetch the details of your distro")}
2223
fmt.Println("Distribution:", distro)
2324
fmt.Println("Built On:", base_distro)
25+
fmt.Println(fetchPackages(base_distro))
2426
default:
2527
fmt.Println("OS not supported")
26-
28+
2729
}
2830
}
2931

@@ -44,4 +46,29 @@ func fetchLinusDistro() (string, string) {
4446
}
4547

4648
return distro, base_distro
47-
}
49+
}
50+
51+
func fetchPackages(base_distro string) []string {
52+
var cmd *exec.Cmd
53+
switch(base_distro) {
54+
case "debian":
55+
cmd = exec.Command("dpkg", "--get-selections")
56+
case "arch":
57+
cmd = exec.Command("pacman", "-Q")
58+
case "rhel", "fedora":
59+
cmd = exec.Command("rpm", "-qa")
60+
case "void":
61+
cmd = exec.Command("xbps-query", "-l")
62+
default :
63+
fmt.Println("Your distro is unsupported, cannot identify package manager !")
64+
return []string{"unknown"}
65+
}
66+
67+
output, err := cmd.CombinedOutput()
68+
if (err != nil) {
69+
fmt.Println("Error in retrieving packages: ", err)
70+
}
71+
fmt.Println("Installed Packages: ")
72+
packages:=strings.Split(string(output), "\n")
73+
return packages
74+
}

0 commit comments

Comments
 (0)