Mettre à jour automatiquement les packages et supprimer les anciennes versions

12

Je suis un peu compulsif à propos de la mise à jour des packages pour tous mes systèmes, donc je me retrouve à exécuter list-packages-> U-> x-> y-> à ypeu près quotidiennement pour mettre à jour mes packages et supprimer les anciennes versions une fois la mise à jour terminée. Comment puis-je automatiser ce processus pour qu'au moins je doive exécuter une seule fonction pour mettre à jour, compiler et supprimer mes packages? Ou y a-t-il une raison pour laquelle je ne voudrais pas faire ça?

Ryan
la source

Réponses:

17

Ce qui suit fait maintenant partie du package Paradox. Invoquez simplement paradox-upgrade-packages.


Cela devrait le faire.

(defun endless/upgrade ()
  "Upgrade all packages, no questions asked."
  (interactive)
  (save-window-excursion
    (list-packages)
    (package-menu-mark-upgrades)
    (package-menu-execute 'no-query)))

Vérifiez simplement quelle fonction est appelée par chacune des étapes que vous avez énumérées et jetez-les dans une fonction interactive. Normalement, les (y or n)invites seraient un problème, mais package-menu-executeprend commodément un NO-QUERYargument.

Malabarba
la source
Si tous les colis sont à jour, il reviendra No operations specified.
ChillarAnand
3

Vous pouvez automatiser cela avec Cask . Cela fonctionne pour le développement de packages, mais aussi pour la configuration utilisateur. La documentation fournit des détails sur la configuration de cette configuration.

En outre, Pallet est utile pour maintenir votre fichier Cask à jour avec les modifications que vous apportez dans le tampon * Packages *.

Kyle Meyer
la source
+1 Cask + Pallet sont excellents (mais je ne recommande pas de les utiliser sous Windows).
rsenna
Hmm, c'est un problème, car je suis sur Windows la plupart du temps.
Ryan
@rsenna Merci pour l'information. Je n'exécute aucun système Windows, donc je ne savais pas qu'ils ne fonctionnaient pas bien.
Kyle Meyer
En fait, vous pouvez utiliser Cask + Pallet sur Windows, avec un peu de travail. J'ai pu y parvenir en utilisant Cygwin, mais je me souviens que c'était loin d'être facile ...
rsenna
Cask fonctionnera correctement dans Windows une fois que vous aurez installé Python. Je ne suis pas sûr de Pallet car je n'ai pas encore testé. Mais en regardant le repo, cela ne devrait pas dépendre d'autre chose que Cask + Emacs.
Jonathan Leech-Pepin