From 67ce4f70382f91a233f9dca3e035466f0de24ef8 Mon Sep 17 00:00:00 2001 From: VetheonGames Date: Thu, 4 Jan 2024 20:12:26 -0700 Subject: [PATCH] Minor Update 1 Some minor changes and bug fixes I've happened upon through my own testing. changes to main.go: ``` - change the CLI syntax for searching to be `allpac search {package name}` instead of `allpac search -package {package name}` - ensure when pacman doesn't find anything, it doesn't return an error. (pacman just exits with error code 1 when it doesn't find anything. Which is super silly but whatever) ``` changes to search.go: ``` - add some changes to ensure if pacman is "erroring" it's a real error. Not just pacman returning Exit code 1 because it didn't get a result. ``` --- .gitignore | 2 ++ cmd/main.go | 35 +++++++++++++++++++++-------------- pkg/packagemanager/search.go | 10 ++++++++-- 3 files changed, 31 insertions(+), 16 deletions(-) diff --git a/.gitignore b/.gitignore index 60afe2f..605caff 100644 --- a/.gitignore +++ b/.gitignore @@ -35,3 +35,5 @@ go.work # Built Visual Studio Code Extensions *.vsix +cmd/allpac +cmd/allpac.txt diff --git a/cmd/main.go b/cmd/main.go index 2549006..7723282 100644 --- a/cmd/main.go +++ b/cmd/main.go @@ -8,9 +8,17 @@ import ( "os" "strings" "pixelridgesoftworks.com/AllPac/pkg/packagemanager" + "pixelridgesoftworks.com/AllPac/pkg/logger" + "path/filepath" ) func main() { + // Initialize the logger + logFilePath := filepath.Join(os.Getenv("HOME"), ".allpac", "logs", "allpac.log") + if err := logger.Init(logFilePath); err != nil { + // If logger initialization fails, you can choose to exit the program or use the default logger + logger.Errorf("Failed to initialize logger: %v", err) + } // Define flags for different commands updateCmd := flag.NewFlagSet("update", flag.ExitOnError) installCmd := flag.NewFlagSet("install", flag.ExitOnError) @@ -32,7 +40,7 @@ func main() { case "uninstall": handleUninstall(uninstallCmd) case "search": - handleSearch(searchCmd) + handleSearch(searchCmd, os.Args[2:]) case "rebuild": handleRebuild(aurRebuildCmd) case "clean-aur": @@ -155,24 +163,23 @@ func handleUninstall(cmd *flag.FlagSet) { } // handleSearch handles the search command for packages across different package managers -func handleSearch(cmd *flag.FlagSet) { - // Define a flag for the package name - packageName := cmd.String("package", "", "Name of the package to search") - - // Parse the command line arguments - cmd.Parse(os.Args[2:]) - +func handleSearch(cmd *flag.FlagSet, args []string) { // Check if the package name was provided - if *packageName == "" { + if len(args) < 1 { fmt.Println("You must specify a package name.") cmd.Usage() return } + // The package name is the first argument + packageName := args[0] + // Search in Pacman - pacmanResults, err := packagemanager.SearchPacman(*packageName) + pacmanResults, err := packagemanager.SearchPacman(packageName) if err != nil { - fmt.Printf("Error searching in Pacman: %v\n", err) + logger.Errorf("Error searching in Pacman: %v", err) + } else if len(pacmanResults) == 0 { + fmt.Println("Pacman: No results found") } else { fmt.Println("Pacman Results:") for _, result := range pacmanResults { @@ -181,7 +188,7 @@ func handleSearch(cmd *flag.FlagSet) { } // Search in Snap - snapResults, err := packagemanager.SearchSnap(*packageName) + snapResults, err := packagemanager.SearchSnap(packageName) if err != nil { fmt.Printf("Error searching in Snap: %v\n", err) } else { @@ -192,7 +199,7 @@ func handleSearch(cmd *flag.FlagSet) { } // Search in Flatpak - flatpakResults, err := packagemanager.SearchFlatpak(*packageName) + flatpakResults, err := packagemanager.SearchFlatpak(packageName) if err != nil { fmt.Printf("Error searching in Flatpak: %v\n", err) } else { @@ -203,7 +210,7 @@ func handleSearch(cmd *flag.FlagSet) { } // Search in AUR - aurResults, err := packagemanager.SearchAUR(*packageName) + aurResults, err := packagemanager.SearchAUR(packageName) if err != nil { fmt.Printf("Error searching in AUR: %v\n", err) } else { diff --git a/pkg/packagemanager/search.go b/pkg/packagemanager/search.go index 1147f83..c166992 100644 --- a/pkg/packagemanager/search.go +++ b/pkg/packagemanager/search.go @@ -104,10 +104,16 @@ type AURPackage struct { func SearchPacman(packageName string) ([]string, error) { cmd := exec.Command("pacman", "-Ss", packageName) output, err := cmd.CombinedOutput() - if err != nil { - logger.Errorf("error searching Pacman: %v", err) + + // Check if the error is due to no results found + if err != nil && len(output) == 0 { + return nil, nil // No results is not an error in this context + } else if err != nil { + // Other errors are still treated as errors + logger.Errorf("Error searching Pacman: %v", err) return nil, fmt.Errorf("error searching Pacman: %v", err) } + return parsePacmanOutput(string(output)), nil }