@@ -53,10 +53,22 @@ func beat(args []string) error {
5353 return nil
5454 }
5555
56+ pacmanPkgs := []string {}
5657 for _ , pkg := range args {
57- fmt .Printf ("beating %s...\n " , pkg )
58+ if id , ok := knownPackages [strings .ToLower (pkg )]; ok {
59+ fmt .Printf ("beating %s via flatpak...\n " , pkg )
60+ err := runFlatpak (id )
61+ if err != nil {
62+ return err
63+ }
64+ } else {
65+ pacmanPkgs = append (pacmanPkgs , pkg )
66+ }
67+ }
68+ if len (pacmanPkgs ) > 0 {
69+ return runPacman (append ([]string {"-S" , "--needed" }, pacmanPkgs ... )... )
5870 }
59- return runPacman ( append ([] string { "-S" , "--needed" }, args ... ) ... )
71+ return nil
6072}
6173
6274func beatWinget (pkg string ) error {
@@ -75,6 +87,18 @@ func beatWinget(pkg string) error {
7587 return runWinget ("install" , "--id" , "--exact" , "--disable-interactivity" , "--accept-package-agreements" , "--accept-source-agreements" , id )
7688}
7789
90+ func runFlatpak (id string ) error {
91+ // ensure flathub remote exists
92+ exec .Command ("flatpak" , "remote-add" , "--if-not-exists" , "flathub" , "https://flathub.org/repo/flathub.flatpakrepo" ).Run ()
93+ c := exec .Command ("flatpak" , "install" , "-y" , "flathub" , id )
94+ out , err := c .CombinedOutput ()
95+ if err != nil {
96+ return fmt .Errorf ("flatpak install %s failed: %w\n %s" , id , err , string (out ))
97+ }
98+ fmt .Print (string (out ))
99+ return nil
100+ }
101+
78102func resolvePackage (query string ) (string , error ) {
79103 c := exec .Command ("winget" , "search" , "--accept-source-agreements" , query )
80104 var outBuf bytes.Buffer
0 commit comments