[python] pamac
Publié : 25 aou 2018, 17:15
depuis aujourd'hui, nous avons avec pamac une bibliothèque pour jouer en python avec ce gestionnaire de paquets
Un petit script qui va faire un
Pour faire mumuse (corser le facile), il va prendre deux paramètres optionnels :
Le code:
ce qui donne en couleur:
Un petit script qui va faire un
pamac list
ou pacman -Q
, donc un petit ls
sans prétention, qui a plus un intérêt pédagogique que pratique.Pour faire mumuse (corser le facile), il va prendre deux paramètres optionnels :
- le premier l'ordre de tri (size par défaut) (name,desc,repo,size,version)
- deuxième, afficher en plus le détail d'un paquet (pour test sans intérêt ici)
chmod +x pacls
) , on peut donc l'utiliser avec
./pacls size gcc
#!/usr/bin/python
# fichier pacls excécutable
import gi, sys
gi.require_version('Pamac', '1.0')
from gi.repository import Pamac # import /usr/share/gir-1.0/Pamac-1.0.gir
class bcolors: # un terminal coloré est un plus
HEADER = '\033[95m'
BLUE = '\033[94m'
GREEN = '\033[92m'
WARNING = '\033[93m'
FAIL = '\033[91m'
ENDC = '\033[0m'
BOLD = '\033[1m'
UNDERLINE = '\033[4m'
DISABLE = '\033[02m'
WHITE = '\033[97m'
fr = { # je ne parle pas angliche
'app_name':'Application',
'desc':'Description',
'download_size':'Taille du paquet',
'icon':'Icône',
'installed_version':'Version',
'name':'Nom',
'origin':'Installé',
'repo':'Dépôt',
'size':'Taille installée',
'version':'Version'
}
def list_installed_pkgs(order: str, detail: str):
pkgs = db.get_installed_pkgs()
if not order in dir(pkgs[0]):
print(f'not found order:{order}')
order = 'size'
pkgs.sort(key=lambda x: getattr(x, order), reverse=False)
total = 0
for pkg in pkgs:
total += pkg.size
size = round(pkg.size/1000/1000, 2)
if size > 30:
size = str(size) + "Mo"
else:
size = ""
CORIGIN = bcolors.WHITE
if pkg.repo == "": # un méchant paquet non officiels !
CORIGIN = bcolors.FAIL
pkg.repo = '-'
line = (
f"{bcolors.GREEN}{pkg.name:{26}}{bcolors.ENDC}"
f"{bcolors.BOLD}{pkg.installed_version:{19}}{bcolors.ENDC}"
f"{CORIGIN}{pkg.repo:{10}}{bcolors.ENDC}"
f"{bcolors.DISABLE}{pkg.desc[:35]:{37}}{bcolors.ENDC}"
f"{size:{8}}"
)
print(line)
# juste pour voir ce que nous retourne cette fonction comme infos
if detail == pkg.name:
attributs = dir(pkg)
for a in attributs:
if a[0] == '_':
continue
print(f'{fr[a]} ({a}): {getattr(pkg,a)}')
i += 1
total = round(total/1000/1000/1000, 2)
print(f"\n{len(pkgs)} packages {total}Go")
if __name__ == "__main__":
config = Pamac.Config(conf_path="/etc/pamac.conf")
db = Pamac.Database(config=config)
order = 'size'
detail = ''
if len(sys.argv) > 1:
order = sys.argv[1]
if len(sys.argv) > 2:
detail = sys.argv[2]
list_installed_pkgs(order, detail)
fpc-src community 3.0.4-1 Sources for the FreePascal compiler 252.14Mo
komodo-edit - 11.1.0_18196-1 Free & Open-Source counterpart of A 267.46Mo
papirus-icon-theme-kde - 20161113-1 Papirus icon theme for KDE 309.75Mo
linux-firmware core 20180815.f1b95fe-1 Firmware files for Linux 311.05Mo
go extra 2:1.10.3-1 Core compiler tools for the Go prog 352.97Mo
libreoffice-fresh extra 6.1.0-2 LibreOffice branch which contains n 394.22Mo
lazarus community 1.8.4-3 Delphi-like IDE for FreePascal comm 734.37Mo
1349 packages 12.06Go