Tags : newsircdoItYourselfprojetsgitweblogicielinternetdéveloppementbashIsMagic


Je participe à un canal IRC (bon c'est un peu moi qui l'ait ouvert, et qui l'administre m'enfin) depuis quelques semaines, et j'avais pensé mettre un "bot" (client autonome) pour faciliter la gestion dudit canal — et pour animer aussi, notre mascotte étant un personnage relativement bourré ^^.

J'avais trouvé un logiciel sympa à utiliser (à première vue du moins) qui s'appelle Supybot.

Supybot est codé en python. Il a à sa disposition plein de plugins qui permettent de faire un peu ce que l'on veut.

Premier bémol : il est possible d'imbriquer des commandes (envoyer le résultat d'une commande comme argument d'une autre), mais impossible en revanche de les enchaîner (genre commande a puis commande b, tout ca en une fois), ce qui m'aurai permis pas mal de choses utiles.

Soit.

Deuxième bémol : le support. J'ai bien tenté de demander conseil sur le canal irc dédié (#supybot), mais apparemment supybot est en fait assez vieux et semble-t-il plus vraiment maintenu. J'ai donc testé un « fork » censé être plus à jour et avoir plus de fonctionnalités (mais toujours point trace de chaînage de commande, hélas…) mais il m'aurait fallu refaire toute ma config (flemme intersidérale ^^).

J'ai laissé traîner quelques jours.

Et là, l'envie m'a pris de tester un truc en bash (la plupart de mes progs utiles que je code commencent comme ça ^^), et j'ai fini par commencer un bot complet en bash, de zéro, en potassant la RFC 1459 qui décrit le protocole complet d'IRC. Plus de 30 commits en moins de 24 heures :þ.

Oui, je suis fou dans ma tête. Mais justement, les RFC sont là pour ça, et DoItYourself, comme toujours — et c'est pas comme si le protocole d'IRC était super compliqué non plus — et là au moins j'ai du chaînage de commande à gogo. J'ai un bot scriptable à volonté, vu qu'il est en bash.

Et non, c'est pas juste un gros fichier imbitable (je te vois venir, toi au fond. Oui, toi, avec la troll face). La commande "source" — l'équivalent d'un « include » en shell, ce qui permet en gros de séparer le code en le groupant par catégorie dans des fichiers différents — c'est fait pour ça ^^ Et vous connaissez beaucoup d'applications natives (pas appweb hein, native genre votre natigateur, votre gestionnaire de fichiers etc) dont vous pouvez modifier le code sans devoir recompiler, et que vous pouvez recharger à la volée pour intégrer les modifications sans même avoir à relancer l'appli pour les prendre en compte ?

Pas moi en tout cas. Et pourtant j'ai bossé sur des applis web en java qui pour une simple ligne de code demandaient une compilation complète + stoppage du serveur + installation de la nouvelle version de l'appli sur le serveur + relancement du serveur + attente que les dieux de l'informatique veuillent bien que cette connerie d'Éclipse arrête de planter heu, que ça démarre.

Oh, et si vous voulez y jeter un œil, c'est par ici.