Pet : votre nouvel animal de compagnie ?

Pet : votre nouvel animal de compagnie ?

Il arrive que nous ne nous souvenions pas de certaines commandes fortement utiles, mais complexes, que nous utilisons rarement. C’est lorsque nous en avons besoin que notre mémoire nous fait défaut et nous voilà partis sur google/stackoverflow/autre afin de retrouver ladite ligne de commande et donc de perdre du temps à chacune de ces recherches. Je vais vous présenter Pet, un outil qui répond à ce problème.

C’est quoi donc ?

Pet est un outil permettant d’enregistrer des lignes de commandes avec une description, de faire des recherches sur ces descriptions afin de retrouver les lignes de commandes enregistrées correspondantes, de jouer ces commandes. Pet est comme beaucoup d’outils récents, écrit en Golang.

Installation

L’outil étant écrit en Go, son installation est des plus simple : il suffit de télécharger le binaire via la page des téléchargements. Pour les utilisateurs de MacOS X, vous pouvez utiliser Brew :
brew install knqyf263/pet/pet.

Configuration

Les éléments de configuration sont assez peu nombreux. Vous y avez accès avec la commande pet configure. Cette commande va vous permettre d’éditer le fichier de configuration, contenant le répertoire de sauvegarde des commandes, l’éditeur à utiliser.
Il sera aussi possible de configurer via ce biais la synchronisation des commandes enregistrées grâce au service Gist de Github avec les informations nécessaires (token, identifiant du Gist).
Par défaut, le fichier contenant les commandes enregistrées se trouve à cet emplacement : ~/.config/pet/snippet.toml.

Utilisation

Afin d’enregistrer une commande avec pet, rien de plus simple. Il vous suffit d’utiliser pet new et de remplir les champs tel que demandé (prenons pour exemple la mise à jour d’un fork Github) :

pet new  
Command> cd ~/git/terraform && git fetch upstream && git checkout master && git merge upstream/master  
Description> Update fork from upstream  

Il est aussi possible de variabiliser les éléments souhaités de la commande afin de pouvoir l’appliquer, dans notre cas, sur différents projets.

$ pet new
Command> cd ~/git/<project> && git fetch upstream && git checkout master && git merge upstream/master  
Description> Update fork from upstream with variables  

Nous avons désormais des commandes enregistrées. C’est bien, mais c’est encore mieux si nous pouvons les exploiter. Pour cela, un ensemble d’actions sont disponibles avec Pet. Il est possible d’effectuer une recherche via pet search. Cela ouvrira une interface Dialog dans votre shell, vous permettant de saisir les termes de recherches comme dans l’exemple ci dessous

Dans le cas où nous souhaiterions exécuter directement un enregistrement, il suffit d’utiliser la commande pet exec. La même fenêtre Dialog s’ouvrira et une fois la bonne ligne de commande retrouvée, il suffit de définir la valeur des variables si cela est nécessaire, et de valider afin d’obtenir son exécution.
Pour ces deux commandes, il est possible de passer l’argument -q pour remplir le champ de recherche avant de rentrer dans l’interface Dialog.

Nous pouvons connaître l’ensemble des lignes de commande enregistrées via pet list :

$ pet list
Description: Update fork from upstream  
    Command: cd ~/git/terraform && git fetch upstream && git checkout master && git merge upstream/master
------------------------------
Description: Update fork from upstream with variables  
    Command: cd ~/git/<project> && git fetch upstream && git checkout master && git merge upstream/master
------------------------------

Il est possible d’éditer cette liste avec pet edit. Cela ouvrira votre éditeur de texte favori, renseigné dans le fichier de configuration de Pet, et donc de faire les modifications souhaitées :

  1 [[snippets]]
  2   description = "Update fork from upstream"
  3   command = "cd ~/git/terraform && git fetch upstream && git checkout master && git merge upstream/master"
  4   output = ""
  5
  6 [[snippets]]
  7   description = "Update fork from upstream with variables"
  8   command = "cd ~/git/<project> && git fetch upstream && git checkout master && git merge upstream/master"
  9   output = ""

Enfin, comme nous l’avons vu dans le paragraphe concernant la configuration de l’outil, il est possible d’effectuer une synchronisation de nos commandes favorites sur le service Gist de Github. Pour cela, il suffit d’utiliser pet sync pour les récupérer, avec l’option -u pour les uploader.

Le mot de la fin

Dans cet article, je vous ai présenté Pet, une découverte récente, mais aussi un outil fort sympathique. J’espère qu’au travers de cette présentation, vous avez trouvé un outil qui vous aidera. L’adopterez-vous ?