@@ -3,6 +3,7 @@ package main
3
3
import (
4
4
"fmt"
5
5
"os"
6
+ "os/exec"
6
7
"runtime"
7
8
"strings"
8
9
)
@@ -21,9 +22,10 @@ func main() {
21
22
if (distro == "unknown" && base_distro == "unknown" ){fmt .Println ("Failed to fetch the details of your distro" )}
22
23
fmt .Println ("Distribution:" , distro )
23
24
fmt .Println ("Built On:" , base_distro )
25
+ fmt .Println (fetchPackages (base_distro ))
24
26
default :
25
27
fmt .Println ("OS not supported" )
26
-
28
+
27
29
}
28
30
}
29
31
@@ -44,4 +46,29 @@ func fetchLinusDistro() (string, string) {
44
46
}
45
47
46
48
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