CLI · ComandosIssues

Issues

Trabalhe com os itens do seu space, ou com as issues de um repositório no GitHub, a partir do terminal.

eqs issue é o gh issue do eQuantic Space, com os mesmos subcomandos e flags. Sem flag, trabalha com os itens do seu space. Com --gh, trabalha com as issues de um repositório no GitHub, através da ligação ao GitHub do seu workspace, pelo que a sua máquina não precisa de um token do GitHub.

Dois modos

Sem flagCom --gh
Trabalha comOs itens de um spaceAs issues de um repositório no GitHub
Endereçado porUm identificador, TASK-42, em maiúsculas ou minúsculasUm número, 42 ou #42, ou o URL da issue
Onde--space <slug>, ou o space ativo (eqs spaces use)-R, --repo [github.com/]<owner>/<name>, ou o remote do GitHub deste clone, origin primeiro
Permissõesitem.*issue.read, issue.write, issue.delete
O URL de uma issue funciona sem --gh: eqs issue view https://github.com/octo/app/issues/42 lê a issue no GitHub.

Comandos

eqs issue list

Lista os itens abertos de um space, os afixados primeiro, ou as issues abertas de um repositório. Também ls.

-s, --state <state>open (predefinição), closed ou all
-a, --assignee <who>Atribuídos a @me, um e-mail, um id ou um login do GitHub
-l, --label <name>Com todas estas labels
--type <type>Deste tipo
-S, --search <words>Com estas palavras (no GitHub, a sintaxe de pesquisa dele)
--mention <who>Que mencionam @me, um membro ou um login
-L, --limit <n>Quantos (predefinição 30)
-w, --webAbre a lista no navegador
--space <slug>, --list <name>eQuantic: o space, e só esta lista
-A, --author <login>, --app <slug>GitHub: abertas por este login, ou por este GitHub App
-m, --milestone <title>GitHub: neste milestone
shell
eqs issue ls -a @me -l api,ui
eqs issue view <ref>

Mostra um item ou uma issue: o tipo, a fase ou o estado, o bloqueio, a afixação, os responsáveis, as labels e a descrição, e aquilo com que se relaciona: o pai, os subitens ou sub-issues, o que o bloqueia e o que ele bloqueia.

-c, --commentsCom os comentários
-w, --webAbre-o no navegador: um item abre em /w/<workspace>/items/<identifier>, na lista onde estiver. Se o navegador estiver noutro workspace, a plataforma propõe a troca primeiro
shell
eqs issue view 650 --gh -c
eqs issue create

Cria um item, do tipo tarefa, na única lista do space e na primeira fase dela salvo indicação em contrário, ou uma issue. Também new.

-t, --title <title>O título (pedido num terminal)
-b, --body <text>, -F, --body-file <path>A descrição, ou um ficheiro com ela (- lê a entrada padrão)
-e, --editorEscreve o título (primeira linha) e a descrição no seu editor
-a, --assignee <who>, -l, --label <name>, --type <type>Os responsáveis, as labels e o tipo
--parent <ref>O item ou a issue de que faz parte
--blocked-by <refs>, --blocking <refs>O que o bloqueia, e o que ele bloqueia
--space <slug>, --list <name>, --priority <p>, --due <YYYY-MM-DD>eQuantic: o space, a lista, a prioridade e o dia do prazo
-m, --milestone <title>GitHub: o milestone
-w, --webAbre o navegador para o criar lá
shell
eqs issue new --gh -t "Flaky test" -l bug --parent 652
eqs issue edit <refs...>

Edita um ou mais itens de uma vez, ou várias issues de um repositório.

-t, --title <title>, -b, --body <text>, -F, --body-file <path>Um novo título ou uma nova descrição
--add-assignee, --remove-assignee <who>Atribui ou retira a atribuição
--add-label, --remove-label <name>Põe ou retira labels
--type <type>Outro tipo: o item mantém o identificador
--parent <ref>, --remove-parentMove-o para debaixo de outro, ou retira-o de debaixo do pai
--add-sub-issue, --remove-sub-issue <refs>Move estes para debaixo dele, ou retira-os
--add-blocked-by, --remove-blocked-by <refs>Estes bloqueiam-no, ou deixam de o bloquear
--add-blocking, --remove-blocking <refs>Ele bloqueia estes, ou deixa de os bloquear
--stage <name>, --priority <p>, --due <YYYY-MM-DD>eQuantic: uma fase da lista, a prioridade, o dia do prazo (none limpa os dois últimos)
-m, --milestone <title>, --remove-milestone, --remove-typeGitHub: define o milestone, ou retira o milestone ou o tipo
shell
eqs issue edit TASK-41 TASK-42 --add-label api
eqs issue close <ref>

Fecha um item, na fase de concluído da lista, ou uma issue, com um motivo. O que já está fechado fica como está.

-r, --reason <reason>completed (predefinição), "not planned" ou duplicate
--duplicate-of <ref>Fecha-o como duplicado deste
-c, --comment <text>Deixa este comentário antes
shell
eqs issue close TASK-42 --duplicate-of TASK-41
eqs issue reopen <ref>

Reabre um item, de volta à primeira fase por fazer da lista, ou uma issue. O que já está aberto fica como está.

-c, --comment <text>Deixa este comentário antes
shell
eqs issue reopen 42 --gh
eqs issue delete <ref>

Elimina um item, com tudo o que está debaixo dele, ou uma issue, depois de escrever o identificador ou o número.

--yesSalta a confirmação
shell
eqs issue delete TASK-42
eqs issue comment <ref>

Comenta um item ou uma issue, ou edita ou elimina o seu último comentário lá.

-b, --body <text>, -F, --body-file <path>, -e, --editorO comentário, na linha de comandos, num ficheiro ou no seu editor
--edit-lastSubstitui o texto do seu último comentário. Com --create-if-none, comenta quando não tem nenhum
--delete-lastElimina o seu último comentário. --yes salta a confirmação
-w, --webAbre-o no navegador para comentar lá
shell
eqs issue comment TASK-42 --edit-last -b "On it, tomorrow"
eqs issue status

Os seus itens abertos, ou as suas issues abertas num repositório: atribuídos a si, que o mencionam, abertos por si.

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

Move um item, com os subitens, para outra lista (<space>/<list>), ou uma issue para outro repositório do mesmo dono (<owner>/<name>). Um item que passa para outro space deixa as labels para trás.

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

Bloqueia a conversa: a partir daí só comenta quem o pode editar. eqs issue unlock <ref> desbloqueia-a.

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

Afixa um item no topo do space, primeiro em todas as vistas da lista, ou uma issue no repositório. Três no máximo de cada, como no GitHub. eqs issue unpin <ref> retira-o.

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

Cria um branch para um item, num repositório ligado, ou para uma issue, associado a ela no GitHub. Com --list, lista os branches.

-n, --name <branch>O nome (predefinição: o identificador ou o número, depois o título)
-b, --base <branch>De onde parte (predefinição: o branch predefinido do repositório)
-c, --checkoutObtém o branch e faz checkout dele neste clone
--worktree <path>Faz o checkout numa nova worktree neste caminho
-l, --listLista os branches, e se cada um ainda existe
--branch-repo <owner/name>O repositório do branch (GitHub: um fork)
shell
eqs issue develop TASK-42 -c
Todos os subcomandos aceitam também --gh, -R, --repo e --json [fields], que imprime a resposta em bruto, ou só os campos indicados, separados por vírgulas. Um campo que a resposta não tem é recusado antes de qualquer ação, com a lista dos que ela tem. As opções que levam vários valores aceitam-nos repetidos ou separados por vírgulas.

Permissões

Cada subcomando precisa da ação abaixo.

SubcomandoSem flagCom --gh
list, view, statusitem.readissue.read
createitem.create (item.update para as relações)issue.write
edit, close, reopen, lock, unlock, pin, unpinitem.updateissue.write
transferitem.update (e item.create noutro space)issue.write
commentitem.comment (item.update num item bloqueado)issue.write
deleteitem.deleteissue.delete
developitem.update e scm.write (item.read para --list)issue.write (issue.read para --list)

Dos papéis predefinidos, Reader lê e comenta: tem item.read, item.comment e issue.read. Contributor também cria e altera: todas as ações item.*, mais issue.read e issue.write. Só Owner tem issue.delete.

Um item pode apontar para outro de outro space: o que duplica, o que o bloqueia, o que ele bloqueia. Só fica a saber desse outro quando pode ler os itens do space dele. Caso contrário, view deixa-o de fora, e close --duplicate-of responde que esse item não existe.

No GitHub

Quem faz o trabalho é a ligação ao GitHub do seu workspace, pelo que o GitHub mostra o App da ligação como autor do que cria e comenta, e o eQuantic Space regista quem pediu. @me é o seu login do GitHub, que ele conhece quando entrou com o GitHub. Caso contrário, escreva o seu login em vez disso. status --gh precisa dessa entrada.

Quando o GitHub recusa, o CLI diz porquê: a recusa indica a permissão que falta ao App, e um limite de pedidos diz quando é reposto.

Aceitar as novas permissões do App

--gh precisa de duas permissões que o GitHub App não pedia antes: Issues e Contents, ambas de leitura e escrita (Contents para criar um branch). Enquanto uma instalação não as aceitar, o GitHub mantém lá as permissões antigas do App e recusa essas escritas, e o CLI indica a permissão em falta.

1
Só no seu próprio App: adicione-as
O App que o eQuantic Space disponibiliza já as pede. Um workspace que usa o seu próprio App adiciona-as em Settings → Developer settings → GitHub Apps → Edit → Permissions & events: em Repository permissions, defina Issues e Contents como Read and write e clique em Save changes.
2
Cada instalação aceita-as
O GitHub envia um e-mail aos donos de cada conta onde o App está instalado. Numa conta pessoal, abra Settings → Applications → Installed GitHub Apps → Configure. Numa organização, abra Settings → Third-party Access → GitHub Apps → Configure. Reveja lá as permissões pedidas e aceite-as.
eqs issue delete --gh não tem retorno: o GitHub apaga a issue de vez. Por isso só os owners têm issue.delete, e o CLI pede-lhe que escreva o número da issue antes.