CLI · ComandosIssues

Issues

Trabaja con los ítems de tu space, o con las issues de un repositorio de GitHub, desde la terminal.

eqs issue es el gh issue de eQuantic Space, con los mismos subcomandos y flags. Sin flag, trabaja con los ítems de tu space. Con --gh, trabaja con las issues de un repositorio de GitHub a través de la conexión de GitHub de tu workspace, así que tu máquina no necesita ningún token de GitHub.

Dos modos

Sin flagCon --gh
Trabaja conLos ítems de un spaceLas issues de un repositorio de GitHub
Se identifica porUn identificador, TASK-42, en mayúsculas o minúsculasUn número, 42 o #42, o la URL de la issue
Dónde--space <slug>, o el space activo (eqs spaces use)-R, --repo [github.com/]<owner>/<name>, o el remote de GitHub de este clon, primero origin
Permisositem.*issue.read, issue.write, issue.delete
La URL de una issue funciona sin --gh: eqs issue view https://github.com/octo/app/issues/42 la lee de GitHub.

Comandos

eqs issue list

Lista los ítems abiertos de un space, primero los fijados, o las issues abiertas de un repositorio. También ls.

-s, --state <state>open (por defecto), closed o all
-a, --assignee <who>Asignados a @me, un correo, un id o un login de GitHub
-l, --label <name>Con todas estas etiquetas
--type <type>De este tipo
-S, --search <words>Con estas palabras (en GitHub, su sintaxis de búsqueda)
--mention <who>Que mencionan a @me, a un miembro o a un login
-L, --limit <n>Cuántos (por defecto 30)
-w, --webAbre la lista en el navegador
--space <slug>, --list <name>eQuantic: el space, y solo esta lista
-A, --author <login>, --app <slug>GitHub: abiertas por este login, o por esta GitHub App
-m, --milestone <title>GitHub: en este hito
shell
eqs issue ls -a @me -l api,ui
eqs issue view <ref>

Muestra un ítem o una issue: su tipo, su etapa o estado, el bloqueo, la fijación, los responsables, las etiquetas y la descripción, y con qué se relaciona: su padre, sus subítems o sub-issues, lo que lo bloquea y lo que bloquea.

-c, --commentsCon sus comentarios
-w, --webLo abre en el navegador: un ítem se abre en /w/<workspace>/items/<identifier>, en su lista, dondequiera que esté. Si el navegador está en otro workspace, la plataforma ofrece antes el cambio
shell
eqs issue view 650 --gh -c
eqs issue create

Crea un ítem, del tipo tarea, en la única lista del space y en la primera etapa de esa lista salvo que se indique otra cosa, o una issue. También new.

-t, --title <title>Su título (se pide en una terminal)
-b, --body <text>, -F, --body-file <path>Su descripción, o un archivo que la contiene (- lee la entrada estándar)
-e, --editorEscribe el título (primera línea) y la descripción en tu editor
-a, --assignee <who>, -l, --label <name>, --type <type>Sus responsables, etiquetas y tipo
--parent <ref>El ítem o la issue del que forma parte
--blocked-by <refs>, --blocking <refs>Lo que lo bloquea, y lo que bloquea
--space <slug>, --list <name>, --priority <p>, --due <YYYY-MM-DD>eQuantic: su space, lista, prioridad y día de vencimiento
-m, --milestone <title>GitHub: su hito
-w, --webAbre el navegador para crearlo allí
shell
eqs issue new --gh -t "Flaky test" -l bug --parent 652
eqs issue edit <refs...>

Edita uno o varios ítems a la vez, o varias issues de un repositorio.

-t, --title <title>, -b, --body <text>, -F, --body-file <path>Un título o una descripción nuevos
--add-assignee, --remove-assignee <who>Asigna o quita la asignación
--add-label, --remove-label <name>Añade o quita etiquetas
--type <type>Otro tipo: el ítem conserva su identificador
--parent <ref>, --remove-parentLo mueve debajo de otro, o lo saca de debajo de su padre
--add-sub-issue, --remove-sub-issue <refs>Mueve estos debajo de él, o los saca
--add-blocked-by, --remove-blocked-by <refs>Estos lo bloquean, o dejan de hacerlo
--add-blocking, --remove-blocking <refs>Bloquea a estos, o deja de hacerlo
--stage <name>, --priority <p>, --due <YYYY-MM-DD>eQuantic: una etapa de su lista, la prioridad, el día de vencimiento (none borra los dos últimos)
-m, --milestone <title>, --remove-milestone, --remove-typeGitHub: fija el hito, o quita el hito o el tipo
shell
eqs issue edit TASK-41 TASK-42 --add-label api
eqs issue close <ref>

Cierra un ítem, en la etapa de terminado de su lista, o una issue, con un motivo. Lo que ya está cerrado se deja como está.

-r, --reason <reason>completed (por defecto), "not planned" o duplicate
--duplicate-of <ref>Lo cierra como duplicado de este
-c, --comment <text>Deja antes este comentario
shell
eqs issue close TASK-42 --duplicate-of TASK-41
eqs issue reopen <ref>

Reabre un ítem, de vuelta a la primera etapa pendiente de su lista, o una issue. Lo que ya está abierto se deja como está.

-c, --comment <text>Deja antes este comentario
shell
eqs issue reopen 42 --gh
eqs issue delete <ref>

Elimina un ítem, con todo lo que tiene debajo, o una issue, después de que escribas su identificador o su número.

--yesOmite la confirmación
shell
eqs issue delete TASK-42
eqs issue comment <ref>

Comenta en un ítem o en una issue, o edita o elimina tu último comentario allí.

-b, --body <text>, -F, --body-file <path>, -e, --editorEl comentario, desde la línea de comandos, un archivo o tu editor
--edit-lastReemplaza el texto de tu último comentario. Con --create-if-none, comenta si no tienes ninguno
--delete-lastElimina tu último comentario. --yes omite la confirmación
-w, --webLo abre en el navegador para comentar allí
shell
eqs issue comment TASK-42 --edit-last -b "On it, tomorrow"
eqs issue status

Tus ítems abiertos, o tus issues abiertas en un repositorio: asignados a ti, que te mencionan, abiertos por ti.

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

Mueve un ítem, con sus subítems, a otra lista (<space>/<list>), o una issue a otro repositorio del mismo dueño (<owner>/<name>). Un ítem que pasa a otro space deja atrás sus etiquetas.

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

Bloquea la conversación: desde entonces solo comenta quien puede editarlo. eqs issue unlock <ref> la desbloquea.

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

Fija un ítem arriba de su space, primero en todas las vistas de su lista, o una issue en su repositorio. Tres como máximo de cada uno, como en GitHub. eqs issue unpin <ref> lo quita.

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

Crea una rama para un ítem, en un repositorio conectado, o para una issue, vinculada a ella en GitHub. Con --list, lista sus ramas.

-n, --name <branch>Su nombre (por defecto: el identificador o el número, y luego el título)
-b, --base <branch>Desde dónde parte (por defecto: la rama predeterminada del repositorio)
-c, --checkoutLa trae y hace checkout de ella en este clon
--worktree <path>Hace el checkout en un nuevo worktree en esta ruta
-l, --listLista las ramas, y si cada una sigue existiendo
--branch-repo <owner/name>El repositorio de la rama (GitHub: un fork)
shell
eqs issue develop TASK-42 -c
Todos los subcomandos aceptan además --gh, -R, --repo y --json [fields], que imprime la respuesta en bruto, o solo los campos indicados, separados por comas. Un campo que la respuesta no tiene se rechaza antes de hacer nada, con la lista de los que tiene. Las opciones que admiten varios valores los aceptan repetidos o separados por comas.

Permisos

Cada subcomando necesita la acción de abajo.

SubcomandoSin flagCon --gh
list, view, statusitem.readissue.read
createitem.create (item.update para sus relaciones)issue.write
edit, close, reopen, lock, unlock, pin, unpinitem.updateissue.write
transferitem.update (y item.create en otro space)issue.write
commentitem.comment (item.update en un ítem bloqueado)issue.write
deleteitem.deleteissue.delete
developitem.update y scm.write (item.read para --list)issue.write (issue.read para --list)

De los roles predefinidos, Reader lee y comenta: tiene item.read, item.comment e issue.read. Contributor además crea y modifica: todas las acciones item.*, más issue.read e issue.write. Solo Owner tiene issue.delete.

Un ítem puede apuntar a otro de otro space: el que duplica, lo que lo bloquea, lo que bloquea. Solo sabes de ese otro cuando puedes leer los ítems de su space. En caso contrario, view lo deja fuera, y close --duplicate-of responde que ese ítem no existe.

En GitHub

El trabajo lo hace la conexión de GitHub de tu workspace, así que GitHub muestra la App de la conexión como autora de lo que creas y comentas, y eQuantic Space registra quién lo pidió. @me es tu login de GitHub, que conoce cuando iniciaste sesión con GitHub. Si no, escribe tu login en su lugar. status --gh necesita ese inicio de sesión.

Cuando GitHub rechaza algo, el CLI dice por qué: el rechazo nombra el permiso que le falta a la App, y un límite de solicitudes dice cuándo se restablece.

Aceptar los nuevos permisos de la App

--gh necesita dos permisos que la GitHub App no pedía antes: Issues y Contents, ambos de lectura y escritura (Contents para crear una rama). Mientras una instalación no los acepte, GitHub mantiene allí los permisos antiguos de la App y rechaza esas escrituras, y el CLI nombra el permiso que falta.

1
Solo en tu propia App: añádelos
La App que ofrece eQuantic Space ya los pide. Un workspace que usa su propia App los añade en Settings → Developer settings → GitHub Apps → Edit → Permissions & events: en Repository permissions, pon Issues y Contents en Read and write y pulsa Save changes.
2
Cada instalación los acepta
GitHub envía un correo a los propietarios de cada cuenta donde está instalada la App. En una cuenta personal, abre Settings → Applications → Installed GitHub Apps → Configure. En una organización, abre Settings → Third-party Access → GitHub Apps → Configure. Revisa allí los permisos solicitados y acéptalos.
eqs issue delete --gh no se puede deshacer: GitHub borra la issue para siempre. Por eso solo los owners tienen issue.delete, y el CLI te pide que escribas antes el número de la issue.