From 96db4572b433c236b0c96aa661d1336307a4fc7e Mon Sep 17 00:00:00 2001 From: roboogg133 Date: Sun, 28 Sep 2025 17:55:36 -0300 Subject: [PATCH] Add list command to manage installed packages, and search to see all packages avaiable --- cmd/packets/main.go | 81 +++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 81 insertions(+) diff --git a/cmd/packets/main.go b/cmd/packets/main.go index 11e09f8..81cd99d 100644 --- a/cmd/packets/main.go +++ b/cmd/packets/main.go @@ -488,10 +488,91 @@ var removeCmd = &cobra.Command{ }, } +var listCmd = &cobra.Command{ + Use: "list", + Args: cobra.NoArgs, + Short: "List all installed packages", + Run: func(cmd *cobra.Command, args []string) { + db, err := sql.Open("sqlite", consts.InstalledDB) + if err != nil { + log.Fatal(err) + } + defer db.Close() + + var count int + if err := db.QueryRow("SELECT COUNT(*) FROM packages").Scan(&count); err != nil { + log.Fatal(err) + } + + rows, err := db.Query("SELECT query_name, name, version, description, package_d, os, arch FROM packages") + if err != nil { + log.Fatal(err) + } + defer rows.Close() + + fmt.Printf(":: Listing all %d packages installed:\n\n", count) + + for rows.Next() { + var queryName, name, version, description, packageDir, os, arch string + if err := rows.Scan(&queryName, &name, &version, &description, &packageDir, &os, &arch); err != nil { + log.Fatal(err) + } + fmt.Printf(" Package %s \n ├──Query name: %s\n ├──Version: %s \n ├──Package dir: %s\n ├──OS: %s\n ├──Arch: %s\n └──Description: %s\n", name, queryName, version, packageDir, os, arch, description) + } + }, +} + +var searchCmd = &cobra.Command{ + Use: "search [query]", + Args: cobra.MaximumNArgs(1), + Short: "Search for all packages", + Run: func(cmd *cobra.Command, args []string) { + db, err := sql.Open("sqlite", consts.IndexDB) + if err != nil { + log.Fatal(err) + } + defer db.Close() + + var count int + if err := db.QueryRow("SELECT COUNT(*) FROM packages").Scan(&count); err != nil { + log.Fatal(err) + } + + var rows *sql.Rows + + if len(args) > 0 { + rows, err = db.Query("SELECT query_name, name, version, description, os, arch FROM packages WHERE name LIKE ? OR description LIKE ? OR query_name LIKE ?", args[0], args[0], args[0]) + if err != nil { + log.Fatal(err) + } + defer rows.Close() + } else { + + rows, err = db.Query("SELECT query_name, name, version, description, os, arch FROM packages") + if err != nil { + log.Fatal(err) + } + defer rows.Close() + } + + fmt.Printf(":: Listing all %d packages:\n\n", count) + + for rows.Next() { + var queryName, name, version, description, os, arch string + if err := rows.Scan(&queryName, &name, &version, &description, &os, &arch); err != nil { + log.Fatal(err) + } + fmt.Printf(" Package %s \n ├──Query name: %s\n ├──Version: %s \n ├──OS: %s\n ├──Arch: %s\n └──Description: %s\n", name, queryName, version, os, arch, description) + } + }, +} + func main() { rootCmd.AddCommand(installCmd) rootCmd.AddCommand(removeCmd) rootCmd.AddCommand(syncCmd) + rootCmd.AddCommand(listCmd) + rootCmd.AddCommand(searchCmd) rootCmd.Execute() }