pressmaster - Fotolia

GitHub CLI 1.0 : l’interface de ligne de commande « pragmatique »

GitHub a lancé la disponibilité générale de son CLI afin de fournir une interface de ligne de commande qui reprend les fonctionnalités de base de la plateforme de version de code. Si le projet cible d’abord les contributeurs open source, GitHub veut développer des capacités pour les entreprises.

Le projet open source GitHub CLI (gh pour les intimes) intéresse une bonne partie de la communauté. Depuis le lancement de la bêta en février jusqu’à la disponibilité générale, 7 mois au total, GitHub assure que 250 000 pull requests ont été créés, 350 000 merges ont été réalisées et 20 000 problèmes (« issues ») postés.

Développé principalement en Golang, il permet de lancer des flux GitHub depuis le terminal, d’appeler l’API GitHub pour enclencher des scripts, ou paramétrer des alias. En plus de GitHub.com, GitHub CLI 1,0 apporte la compatibilité avec GitHub Enterprise édition 2.2 et GitHub.com. L’interface de ligne de commande est disponible sur Windows, Linux (Debian, Ubuntu, CentOS, Red Hat, Fedora) et macOS.

En premier lieu, l’éditeur a transcrit les fonctionnalités principales de GitHub dans le CLI afin que les développeurs n’aient pas à quitter leur terminal de développement pour participer à des projets open source.

« Pour la version 1.0, Nous voulions nous concentrer sur les fonctionnalités clés de GitHub que sont les revues de code, les merges, les pull requests, et les releases », assure Ryan Nystrom, directeur de l’ingénierie chez GitHub. « C’était pour nous la base solide à partir de laquelle nous voulons faire évoluer le projet plus tard », ajoute-t-il.

Les commandes gh doivent maintenant permettre de faire une grande partie ce qu’il est possible de réaliser depuis la plateforme de GitHub. Les développeurs doivent d’abord cloner un projet hébergé sur GitHub.com ou GitHub Enterprise avant de pouvoir y contribuer depuis ce CLI. Ils peuvent également créer un dépôt depuis l’interface de ligne de commande.

Ensuite, ils créent, consultent ou modifient des gists (partage de bout de code), des issues, des dépôts, des revues de codes, des merge et des releases. Il est possible de filtrer le contenu des dépôts par étape, auteur ou mentions. Au total, le projet a reçu plus de 100 contributions de la part de la communauté.

Une base fonctionnelle pour étendre les capacités plus tard

Dernièrement, GitHub a fortement accentué ses efforts autour de GitHub Actions, son outil d’automatisation CI. Pour l’instant, GitHub CLI ne permet pas de manipuler entièrement cette fonctionnalité. « Ce que vous pouvez faire pour l’instant c’est voir les actions appliquées à certains pull requests, leur statut, mais la prochaine étape de notre feuille de route, c’est de les rendre interactives [depuis le CLI] », indique Ryan Nystrom.

Le directeur de l’ingénierie précise également que GitHub souhaite « packager » gh et Actions afin d’écrire des scripts avec le premier et de les exécuter avec le second. « Je vois de plus en plus d’utilisateurs utiliser des scripts Batch ou JavaScript pour interagir avec les issues alors que ce serait beaucoup plus simple d’écrire une seule ligne de code pour déclencher des interactions », commente-t-il.

GitHub CLI pourrait également se connecter avec CodeSpaces (basé sur Visual Studio de Microsoft), l’IDE disponible depuis un navigateur web propulsé par la filiale indépendante de Microsoft. « Il y a autre chose que nous aimerions proposer. Nous avons observé des utilisateurs faire des gists de leur alias pour les partager. Nous imaginons un moyen pour faciliter l’import d’alias préparés par d’autres développeurs ».

« Nous voulons répondre aux besoins de deux types de développeurs : ceux qui se sentent à l’aise avec les interfaces graphiques, qui veulent manipuler leurs commandes avec les flèches de leur clavier et ceux qui se sentent hacker dans l’âme, qui scriptent toutes leurs commandes », précise Ryan Nystrom.

Une alternative à Hub

L’idée d’un CLI pour GitHub n’est pas nouvelle. Avant que le projet gh commence à l’automne 2019 en interne chez GitHub, les développeurs qui souhaitaient profiter d’une intégration du logiciel de contrôle de version dans un CLI utilisaient Hub. GitHub spécifie la différence entre les deux outils. « Pendant de nombreuses années, hub était l’outil GitHub CLI non officiel. Gh est un nouveau projet qui nous aide à explorer ce à quoi peut ressembler un outil GitHub CLI officiel avec un design fondamentalement différent. Alors que les deux outils amènent GitHub au terminal, Hub se comporte comme un proxy de git, et gh est un outil autonome », peut-on lire.

L’éditeur a sciemment décorrélé les deux projets pour éviter des blocages ou des contraintes imputables à « dix ans de décisions de conception ». L’équipe GitHub CLI est maintenant pleinement concentrée sur le projet officiel.

Les contributeurs open source peuvent toujours participer au développement de Hub, s’il le souhaite. D’ailleurs, un des principaux contributeurs à Hub est l’un des maîtres d’œuvre de GitHub CLI. Dans sa FAQ consacrée à ce sujet, GitHub, par la plume d’un de ses Staff Product Manager, Billy Griffin assure qu’il n’a « aucun intérêt à forcer qui que ce soit à utiliser GitHub CLI au lieu de Hub ». Le nouvel outil n’est pas conçu pour remplacer totalement la précédente solution.

Un CLI « pragmatique »

« Hub est un CLI très puissant, très complet, mais il n’est pas facile à utiliser pour quelqu’un qui ne le maîtrise pas. Il est difficile de savoir simplement quels sont les outils et les commandes. Moi-même, je ne suis pas un expert du terminal et en essayant de l’utiliser je me suis senti totalement perdu alors que gh est accessible et plus pragmatique », témoigne Ryan Nystrom.

GitHub n’a pas non plus « l’intention de commercialiser ou d’ajouter des fonctionnalités premium pour les entreprises », ce que la licence MIT sélectionnée lui permet de faire en principe. « Certaines entreprises développent leurs propres outils CLI pour interagir avec le système de contrôle de versions tel que GitHub ou autre. Je pense que notre CLI nous offre l’opportunité de discuter avec nos plus grands clients, de se renseigner sur les flux de travail de leurs développeurs, et potentiellement de bâtir de nouvelles fonctionnalités en retour pour répondre à leurs besoins », pense Ryan Nystrom. « Nous devons prendre en considération ce troisième profil qu’est le développeur d’entreprise, parce que contribuer à un gros projet open source n’est pas la même chose que d’utiliser un dépôt en entreprise ».

GitHub CLI est ouvert aux contributions, même si le projet est considéré trop petit pour nécessiter la mise en place d’une gouvernance complète. « Nous acceptons les propositions, mais nous retenons principalement celles qui correspondent à l’approche pragmatique que nous lui avons insufflée », conclut le directeur de l’ingénierie chez GitHub.

Pour approfondir sur Outils de développement