@@ -190,6 +190,45 @@ impl ArchPackageManager for Pikaur {
190190 }
191191}
192192
193+ pub struct Pamac {
194+ executable : PathBuf ,
195+ }
196+
197+ impl Pamac {
198+ fn get ( ) -> Option < Self > {
199+ Some ( Self {
200+ executable : which ( "pamac" ) ?,
201+ } )
202+ }
203+ }
204+ impl ArchPackageManager for Pamac {
205+ fn upgrade ( & self , ctx : & ExecutionContext ) -> Result < ( ) > {
206+ let mut command = ctx. run_type ( ) . execute ( & self . executable ) ;
207+
208+ command
209+ . arg ( "upgrade" )
210+ . args ( ctx. config ( ) . pamac_arguments ( ) . split_whitespace ( ) )
211+ . env ( "PATH" , get_execution_path ( ) ) ;
212+
213+ if ctx. config ( ) . yes ( Step :: System ) {
214+ command. arg ( "--no-confirm" ) ;
215+ }
216+
217+ command. check_run ( ) ?;
218+
219+ if ctx. config ( ) . cleanup ( ) {
220+ let mut command = ctx. run_type ( ) . execute ( & self . executable ) ;
221+ command. arg ( "clean" ) ;
222+ if ctx. config ( ) . yes ( Step :: System ) {
223+ command. arg ( "--no-confirm" ) ;
224+ }
225+ command. check_run ( ) ?;
226+ }
227+
228+ Ok ( ( ) )
229+ }
230+ }
231+
193232fn box_package_manager < P : ' static + ArchPackageManager > ( package_manager : P ) -> Box < dyn ArchPackageManager > {
194233 Box :: new ( package_manager) as Box < dyn ArchPackageManager >
195234}
@@ -203,12 +242,14 @@ pub fn get_arch_package_manager(ctx: &ExecutionContext) -> Option<Box<dyn ArchPa
203242 . or_else ( || YayParu :: get ( "yay" , & pacman) . map ( box_package_manager) )
204243 . or_else ( || Trizen :: get ( ) . map ( box_package_manager) )
205244 . or_else ( || Pikaur :: get ( ) . map ( box_package_manager) )
245+ . or_else ( || Pamac :: get ( ) . map ( box_package_manager) )
206246 . or_else ( || Pacman :: get ( ctx) . map ( box_package_manager) ) ,
207247 config:: ArchPackageManager :: Trizen => Trizen :: get ( ) . map ( box_package_manager) ,
208248 config:: ArchPackageManager :: Paru => YayParu :: get ( "paru" , & pacman) . map ( box_package_manager) ,
209249 config:: ArchPackageManager :: Yay => YayParu :: get ( "yay" , & pacman) . map ( box_package_manager) ,
210250 config:: ArchPackageManager :: Pacman => Pacman :: get ( ctx) . map ( box_package_manager) ,
211251 config:: ArchPackageManager :: Pikaur => Pikaur :: get ( ) . map ( box_package_manager) ,
252+ config:: ArchPackageManager :: Pamac => Pamac :: get ( ) . map ( box_package_manager) ,
212253 }
213254}
214255
0 commit comments