i code them in oop logic
This commit is contained in:
parent
40902f3f5b
commit
9449311ebf
5 changed files with 94 additions and 0 deletions
12
src/parch-profiler/pckmng/__init__.py
Normal file
12
src/parch-profiler/pckmng/__init__.py
Normal file
|
@ -0,0 +1,12 @@
|
|||
from .base import PackageConfig, PackageManager
|
||||
|
||||
from .pacman import PacmanConf, Pacman
|
||||
from .aur import ParuConf, Paru
|
||||
|
||||
try:
|
||||
from .flatpak import FlatpakConf, Flatpak
|
||||
except:
|
||||
pass # TODO: write a log for flatpak
|
||||
|
||||
|
||||
|
19
src/parch-profiler/pckmng/aur.py
Normal file
19
src/parch-profiler/pckmng/aur.py
Normal file
|
@ -0,0 +1,19 @@
|
|||
from plumbum.cmd import sudo, paru
|
||||
|
||||
from .base import PackageConfig, PackageManager
|
||||
|
||||
|
||||
class ParuConf(PackageConfig):
|
||||
pm: str = 'paru'
|
||||
|
||||
|
||||
class Paru(PackageManager):
|
||||
pckconf: ParuConf = ParuConf
|
||||
|
||||
def install(self):
|
||||
cmd = sudo[paru['-Syu', self.pckconf.packages]]
|
||||
cmd()
|
||||
|
||||
def list(self):
|
||||
cmd = paru["-Qeq"]
|
||||
return ParuConf(packages=cmd().splitlines())
|
24
src/parch-profiler/pckmng/base.py
Normal file
24
src/parch-profiler/pckmng/base.py
Normal file
|
@ -0,0 +1,24 @@
|
|||
from typing import Type, List
|
||||
from abc import ABC, abstractmethod
|
||||
from pydantic import BaseModel
|
||||
|
||||
|
||||
class PackageConfig(BaseModel):
|
||||
pm: str # package manager name
|
||||
packages: List[str]
|
||||
|
||||
|
||||
class PackageManager(ABC):
|
||||
pckconf: Type[PackageConfig] = None
|
||||
|
||||
def __init__(self, pckconf: PackageConfig):
|
||||
if isinstance(pckconf, self.pckconf):
|
||||
self.pckconf = pckconf
|
||||
|
||||
@abstractmethod
|
||||
def install(self):
|
||||
raise NotImplemented()
|
||||
|
||||
@property
|
||||
def list(self):
|
||||
raise NotImplemented()
|
20
src/parch-profiler/pckmng/flatpak.py
Normal file
20
src/parch-profiler/pckmng/flatpak.py
Normal file
|
@ -0,0 +1,20 @@
|
|||
from plumbum.cmd import flatpak
|
||||
|
||||
from .base import PackageConfig, PackageManager
|
||||
|
||||
|
||||
class FlatpakConf(PackageConfig):
|
||||
pm: str = 'flatpak'
|
||||
|
||||
|
||||
class Flatpak(PackageManager):
|
||||
pckconf: FlatpakConf = FlatpakConf
|
||||
|
||||
def install(self):
|
||||
cmd = flatpak["install", "-y", self.pckconf.packages]
|
||||
return cmd()
|
||||
|
||||
def list(self):
|
||||
cmd = flatpak["list", "--app", "--columns=application"]
|
||||
return FlatpakConf(packages=cmd().splitlines())
|
||||
|
19
src/parch-profiler/pckmng/pacman.py
Normal file
19
src/parch-profiler/pckmng/pacman.py
Normal file
|
@ -0,0 +1,19 @@
|
|||
from plumbum.cmd import sudo, pacman
|
||||
|
||||
from .base import PackageConfig, PackageManager
|
||||
|
||||
|
||||
class PacmanConf(PackageConfig):
|
||||
pm: str = 'pacman'
|
||||
|
||||
|
||||
class Pacman(PackageManager):
|
||||
pckconf: PacmanConf = PacmanConf
|
||||
|
||||
def install(self):
|
||||
cmd = sudo[pacman['-Syu', self.pckconf.packages]]
|
||||
cmd()
|
||||
|
||||
def list(self):
|
||||
cmd = pacman["-Qeq"]
|
||||
return PacmanConf(packages=cmd().splitlines())
|
Loading…
Add table
Reference in a new issue