CLI · CommandesIssues

Issues

Travaillez avec les éléments de votre space, ou les issues GitHub d'un dépôt, depuis le terminal.

eqs issue est le gh issue d'eQuantic Space, avec les mêmes sous-commandes et options. Sans option, il travaille sur les éléments de votre space. Avec --gh, il travaille sur les issues d'un dépôt GitHub, via la connexion GitHub de votre workspace : votre machine n'a besoin d'aucun jeton GitHub.

Deux modes

Sans optionAvec --gh
Porte surLes éléments d'un spaceLes issues d'un dépôt GitHub
Désigné parUn identifiant, TASK-42, en majuscules ou en minusculesUn numéro, 42 ou #42, ou l'URL de l'issue
Où--space <slug>, ou le space actif (eqs spaces use)-R, --repo [github.com/]<owner>/<name>, ou le remote GitHub de ce clone, origin d'abord
Permissionsitem.*issue.read, issue.write, issue.delete
L'URL d'une issue fonctionne sans --gh : eqs issue view https://github.com/octo/app/issues/42 la lit sur GitHub.

Commandes

eqs issue list

Liste les éléments ouverts d'un space, les épinglés d'abord, ou les issues ouvertes d'un dépôt. Aussi ls.

-s, --state <state>open (par défaut), closed ou all
-a, --assignee <who>Assignés à @me, un e-mail, un id ou un login GitHub
-l, --label <name>Portant tous ces labels
--type <type>De ce type
-S, --search <words>Contenant ces mots (sur GitHub, sa syntaxe de recherche)
--mention <who>Mentionnant @me, un membre ou un login
-L, --limit <n>Combien (30 par défaut)
-w, --webOuvre la liste dans le navigateur
--space <slug>, --list <name>eQuantic : le space, et seulement cette liste
-A, --author <login>, --app <slug>GitHub : ouvertes par ce login, ou par cette GitHub App
-m, --milestone <title>GitHub : dans ce milestone
shell
eqs issue ls -a @me -l api,ui
eqs issue view <ref>

Affiche un élément ou une issue : son type, son étape ou son état, son verrou, son épinglage, ses assignés, ses labels et sa description, et ce à quoi il est lié : son parent, ses sous-éléments ou sous-issues, ce qui le bloque et ce qu'il bloque.

-c, --commentsAvec ses commentaires
-w, --webL'ouvre dans le navigateur : un élément s'ouvre à /w/<workspace>/items/<identifier>, dans sa liste, où qu'il soit. Si le navigateur est dans un autre workspace, la plateforme propose d'abord d'en changer
shell
eqs issue view 650 --gh -c
eqs issue create

Crée un élément, de type tâche, dans l'unique liste du space et dans la première étape de cette liste sauf indication contraire, ou une issue. Aussi new.

-t, --title <title>Son titre (demandé dans un terminal)
-b, --body <text>, -F, --body-file <path>Sa description, ou un fichier qui la contient (- lit l'entrée standard)
-e, --editorÉcrit le titre (première ligne) et la description dans votre éditeur
-a, --assignee <who>, -l, --label <name>, --type <type>Ses assignés, labels et type
--parent <ref>L'élément ou l'issue dont il fait partie
--blocked-by <refs>, --blocking <refs>Ce qui le bloque, et ce qu'il bloque
--space <slug>, --list <name>, --priority <p>, --due <YYYY-MM-DD>eQuantic : son space, sa liste, sa priorité et son jour d'échéance
-m, --milestone <title>GitHub : son milestone
-w, --webOuvre le navigateur pour le créer là-bas
shell
eqs issue new --gh -t "Flaky test" -l bug --parent 652
eqs issue edit <refs...>

Modifie un ou plusieurs éléments à la fois, ou plusieurs issues d'un dépôt.

-t, --title <title>, -b, --body <text>, -F, --body-file <path>Un nouveau titre ou une nouvelle description
--add-assignee, --remove-assignee <who>Assigne ou retire l'assignation
--add-label, --remove-label <name>Ajoute ou retire des labels
--type <type>Un autre type : l'élément garde son identifiant
--parent <ref>, --remove-parentLe place sous un autre, ou le retire de sous son parent
--add-sub-issue, --remove-sub-issue <refs>Place ceux-ci sous lui, ou les en retire
--add-blocked-by, --remove-blocked-by <refs>Ceux-ci le bloquent, ou ne le bloquent plus
--add-blocking, --remove-blocking <refs>Il bloque ceux-ci, ou ne les bloque plus
--stage <name>, --priority <p>, --due <YYYY-MM-DD>eQuantic : une étape de sa liste, la priorité, le jour d'échéance (none efface les deux derniers)
-m, --milestone <title>, --remove-milestone, --remove-typeGitHub : définit le milestone, ou retire le milestone ou le type
shell
eqs issue edit TASK-41 TASK-42 --add-label api
eqs issue close <ref>

Ferme un élément, dans l'étape terminée de sa liste, ou une issue, avec un motif. Ce qui est déjà fermé reste tel quel.

-r, --reason <reason>completed (par défaut), "not planned" ou duplicate
--duplicate-of <ref>Le ferme comme doublon de celui-ci
-c, --comment <text>Laisse d'abord ce commentaire
shell
eqs issue close TASK-42 --duplicate-of TASK-41
eqs issue reopen <ref>

Rouvre un élément, dans la première étape à faire de sa liste, ou une issue. Ce qui est déjà ouvert reste tel quel.

-c, --comment <text>Laisse d'abord ce commentaire
shell
eqs issue reopen 42 --gh
eqs issue delete <ref>

Supprime un élément, avec tout ce qui se trouve sous lui, ou une issue, une fois que vous avez tapé son identifiant ou son numéro.

--yesPasse la confirmation
shell
eqs issue delete TASK-42
eqs issue comment <ref>

Commente un élément ou une issue, ou modifie ou supprime votre dernier commentaire.

-b, --body <text>, -F, --body-file <path>, -e, --editorLe commentaire, en ligne de commande, depuis un fichier ou dans votre éditeur
--edit-lastRemplace le texte de votre dernier commentaire. Avec --create-if-none, commente si vous n'en avez aucun
--delete-lastSupprime votre dernier commentaire. --yes passe la confirmation
-w, --webL'ouvre dans le navigateur pour y commenter
shell
eqs issue comment TASK-42 --edit-last -b "On it, tomorrow"
eqs issue status

Vos éléments ouverts, ou vos issues ouvertes dans un dépôt : qui vous sont assignés, qui vous mentionnent, que vous avez ouverts.

shell
eqs issue status --gh
eqs issue transfer <ref> <destination>

Déplace un élément, avec ses sous-éléments, vers une autre liste (<space>/<list>), ou une issue vers un autre dépôt du même propriétaire (<owner>/<name>). Un élément qui passe dans un autre space y perd ses labels.

shell
eqs issue transfer TASK-42 platform/Backlog
eqs issue lock <ref>

Verrouille la conversation : dès lors, seuls ceux qui peuvent le modifier commentent. eqs issue unlock <ref> la déverrouille.

-r, --reason <reason>off_topic, resolved, spam ou too_heated
shell
eqs issue lock TASK-42 -r resolved
eqs issue pin <ref>

Épingle un élément en haut de son space, en tête de toutes les vues de sa liste, ou une issue dans son dépôt. Trois au plus de chaque, comme sur GitHub. eqs issue unpin <ref> le désépingle.

shell
eqs issue pin TASK-42
eqs issue develop <ref>

Crée une branche pour un élément, dans un dépôt connecté, ou pour une issue, liée à elle sur GitHub. Avec --list, liste ses branches.

-n, --name <branch>Son nom (par défaut : l'identifiant ou le numéro, puis le titre)
-b, --base <branch>D'où elle part (par défaut : la branche par défaut du dépôt)
-c, --checkoutLa récupère et en fait le checkout dans ce clone
--worktree <path>En fait plutôt le checkout dans un nouveau worktree à ce chemin
-l, --listListe les branches, et si chacune existe encore
--branch-repo <owner/name>Le dépôt de la branche (GitHub : un fork)
shell
eqs issue develop TASK-42 -c
Chaque sous-commande accepte aussi --gh, -R, --repo et --json [fields], qui affiche la réponse brute, ou seulement les champs nommés, séparés par des virgules. Un champ que la réponse n'a pas est refusé avant toute action, avec la liste de ceux qu'elle a. Les options qui prennent plusieurs valeurs les acceptent répétées ou séparées par des virgules.

Permissions

Chaque sous-commande demande l'action ci-dessous.

Sous-commandeSans optionAvec --gh
list, view, statusitem.readissue.read
createitem.create (item.update pour ses relations)issue.write
edit, close, reopen, lock, unlock, pin, unpinitem.updateissue.write
transferitem.update (et item.create dans un autre space)issue.write
commentitem.comment (item.update sur un élément verrouillé)issue.write
deleteitem.deleteissue.delete
developitem.update et scm.write (item.read pour --list)issue.write (issue.read pour --list)

Parmi les rôles intégrés, Reader lit et commente : il a item.read, item.comment et issue.read. Contributor crée et modifie aussi : toutes les actions item.*, plus issue.read et issue.write. Seul Owner a issue.delete.

Un élément peut en désigner un autre dans un autre space : celui qu'il duplique, ce qui le bloque, ce qu'il bloque. Vous n'en êtes informé que si vous pouvez lire les éléments de son space. Sinon, view l'omet, et close --duplicate-of répond que cet élément n'existe pas.

Sur GitHub

C'est la connexion GitHub de votre workspace qui fait le travail : GitHub affiche donc l'App de la connexion comme auteur de ce que vous créez et commentez, et eQuantic Space enregistre qui l'a demandé. @me est votre login GitHub, qu'il connaît si vous vous êtes connecté avec GitHub. Sinon, écrivez votre login à la place. status --gh demande cette connexion.

Quand GitHub refuse, le CLI dit pourquoi : le refus nomme la permission qui manque à l'App, et une limite de débit indique quand elle se réinitialise.

Accepter les nouvelles permissions de l'App

--gh demande deux permissions que la GitHub App ne demandait pas avant : Issues et Contents, toutes deux en lecture et écriture (Contents pour créer une branche). Tant qu'une installation ne les a pas acceptées, GitHub y garde les anciennes permissions de l'App et refuse ces écritures, et le CLI nomme la permission manquante.

1
Votre propre App seulement : ajoutez-les
L'App fournie par eQuantic Space les demande déjà. Un workspace qui utilise sa propre App les ajoute dans Settings → Developer settings → GitHub Apps → Edit → Permissions & events : sous Repository permissions, passez Issues et Contents à Read and write, puis Save changes.
2
Chaque installation les accepte
GitHub envoie un e-mail aux propriétaires de chaque compte où l'App est installée. Sur un compte personnel, ouvrez Settings → Applications → Installed GitHub Apps → Configure. Sur une organisation, ouvrez Settings → Third-party Access → GitHub Apps → Configure. Examinez-y les permissions demandées et acceptez-les.
eqs issue delete --gh est irréversible : GitHub supprime l'issue pour de bon. C'est pourquoi seuls les owners ont issue.delete, et le CLI vous demande d'abord de taper le numéro de l'issue.