blog.leny.me

sote, gestionnaire de vos chemins favoris

Comme tout bon développeur, il n’y a pas un moment de la journée où je n’ai pas au moins un terminal ouvert.
Au fil des années, j’en ai perfectionné l’utilisation, puis sa personnalisation.

Toutefois, le truc qui m’ennuyait le plus, c’était l’absence de raccourcis pour les chemins les plus souvent utilisés.

Je connais bien sûr les commandes pushd, popd & dirs, mais je ne les ai jamais trouvée adaptées à mes besoins. Je pourrais aussi créer des alias, mais c’est pas le truc le plus pratique à gérer, surtout que dans les faits, certains “favoris“ sont éphémères : le temps d’un projet client, par exemple.

Je voulais donc avoir sous la main un petit utilitaire capable de sauvegarder mes chemins favoris, désignés par un nom, et pouvoir ensuite “sauter“ d’un chemin à un autre quand je le désire.

En utilisant ma légendaire technique de nommage, le projet sote venait d’être lancé.

Je voulais que ça soit simple, et que les favoris soient stockés de manière pérenne. J’ai commencé le projet en node.js, avec la librairie commander. Le stockage de faisait sous la forme d’un fichier json, sauvegardé en tant que dotfile à la racine du dossier utilisateur.

Toute la logique de gestion des favoris fonctionnait, je n’avais plus qu’à faire LA fonctionnalité la plus importante : utiliser le chemin d’un favoris et y sauter.
Malheureusement, les commandes en node.js faisaient partie de leur propre sous-processus, et je ne pouvais donc pas changer le chemin du processus parent (mon terminal) depuis ce script… mon idée tombait à l’eau sous cette forme.

J’en ai discuté avec mon ami et associé, Thierry, qui a bien plus d’expérience que moi quand il s’agit de triturer la ligne de commande, qui m’a confirmé les raisons de mes soucis, mais m’a aussi indiqué les possibilités d’y remédier : coder l’outil en bash, entre autres solutions.
Ça tombe bien, c’était justement ma résolution n°8, approfondir le scripting bash… seulement, je n’avais pas le temps à ce moment là, j’ai donc laissé le projet dans un coin en attendant.

Quelques semaines ont passé, et suite à quelques expériences en bash qui n’avaient rien à voir, je me suis dit qu’il était temps de ressortir sote du placard, et recoder le bidule en bash.
Au final, ça a été très vite, en une grosse matinée, la base était bouclée, une petite journée pour les fioritures (tankipas m’indique 6h17 de travail).

Le plus complexe aura été, dans l’ordre, de trouver le format pour stocker les chemins (je me suis rabattu sur les classiques inifiles), les utilitaires pour les lire/écrire (git config fait ça très bien, pourquoi réinventer la route ?), et la configuration de l’autocomplétion qui m’a un peu fait chier par moment.

Le résultat final est conforme à mes attentes, et pourrait peut-être vous intéresser si, comme moi, vous sautez allègrement d’un chemin à un autre : sote.

leny

Il n'y a pas de module de commentaires sur ce blog, principalement pour éviter à devoir gérer avec les spams, la pub, les insultes, ...

Toutefois, si vous avez quelque chose à dire/corriger/modifier, ou simplement exprimer votre opinion sur un post, n'hésitez pas à me contacter sur Twitter (@leny_be).