Aller au contenu

Commande : erable prune

Description

La commande erable prune assure la gestion du cycle de vie et la rétention d'historique des paquets installés dans l'environnement local (~/.erable/packages/). Elle permet de libérer de l'espace disque en supprimant les anciennes versions d'un ou de l'ensemble des paquets, tout en garantissant la préservation d'au minimum $N$ versions récentes ($N \ge 1$) et l'inviolabilité absolue de la version active (current).


Syntaxe

erable prune [package_name] [--keep <N>] [--exclude-prune <pkg1> <pkg2> ...]

Paramètres et Options

Argument / Option Alias Type Défaut Description
package_name - string "" (tous) (Optionnel) Nom du paquet à purger. Si omis, s'applique à tous les paquets installés.
--keep -k int 1 Nombre minimum de versions récentes à conserver. Doit être $\ge 1$.
--exclude-prune -e list<string> [] Liste des paquets exclus de la purge.
--help -h - - Affiche l'aide interactive de la commande.

Règles Métier & Garanties d'Intégrité

  1. Rétention Minimum ($N \ge 1$) : Le paramètre --keep exige un entier strictement positif. Passer --keep 0 ou un entier négatif déclenche immédiatement une erreur de validation VALIDATION_ERROR sans modifier le système de fichiers.

  2. Tri Sémantique SemVer Décroissant : Les versions présentes dans le répertoire du paquet (~/.erable/packages/<pkg>/<version>) sont ordonnées selon l'ordre sémantique naturel décroissant ($v_{N} > v_{N-1} > \dots$). Les $k$ premières versions sont conservées ; les versions antérieures sont purgées.

  3. Protection Inviolable de la Version Active (current) : Le lien/dossier de routage current n'est jamais supprimé ni altéré par la commande prune. Grâce à l'architecture de liaisons physiques permanentes (Hardlinks NTFS/POSIX), les binaires actifs restent opérationnels même lors de la suppression de versions intermédiaires.

  4. Exclusion Granulaire : Les paquets spécifiés dans --exclude-prune (ex. outils critiques ou versions épinglées) sont explicitement sautés lors du balayage global.


Exemples d'Utilisation

1. Purge globale standard (conserver la dernière version de chaque paquet)

erable prune
# ou de manière explicite :
erable prune --keep 1

2. Purge d'un paquet spécifique en conservant 2 versions

erable prune fastfetch --keep 2

3. Purge globale avec exclusion de paquets sensibles

erable prune --keep 1 --exclude-prune ["erable", "ripgrep", "nodejs"]

4. Exemple de rapport d'exécution

==========================================================
   Rapport de Purge Erable [keep: 1]
==========================================================
* erable:
    Versions conservees : 0.4.1
    Versions purgees    : 0.4.0 [1 supprimees]
* fastfetch:
    Versions conservees : 2.32.0
    Versions purgees    : aucune [0 supprimees]
----------------------------------------------------------
Total versions purgees : 1
==========================================================