CLI · ComandosIssues

Issues

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

eqs issue é o gh issue do eQuantic Space, com os mesmos subcomandos e flags. Sem flag, ele trabalha com os itens do seu space. Com --gh, trabalha com as issues de um repositório no GitHub, pela conexão do GitHub do seu workspace, então a sua máquina não precisa de 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 a 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
A 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 fixados primeiro, ou as issues abertas de um repositório. Também ls.

-s, --state <state>open (padrã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 busca dele)
--mention <who>Que mencionam @me, um membro ou um login
-L, --limit <n>Quantos (padrã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, o estágio ou o estado, a trava, a fixação, os responsáveis, as labels e a descrição, e com o 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 no navegador: um item abre em /w/<workspace>/items/<identifier>, na lista onde estiver. Se o navegador estiver em outro workspace, a plataforma oferece a troca antes
shell
eqs issue view 650 --gh -c
eqs issue create

Cria um item, do tipo tarefa, na única lista do space e no primeiro estágio dela se nada for dito, ou uma issue. Também new.

-t, --title <title>O título (perguntado num terminal)
-b, --body <text>, -F, --body-file <path>A descrição, ou um arquivo 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 ele 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 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 tira a atribuição
--add-label, --remove-label <name>Põe ou tira labels
--type <type>Outro tipo: o item mantém o identificador
--parent <ref>, --remove-parentMove para baixo de outro, ou tira de baixo do pai
--add-sub-issue, --remove-sub-issue <refs>Move estes para baixo dele, ou tira
--add-blocked-by, --remove-blocked-by <refs>Estes o bloqueiam, ou deixam de bloquear
--add-blocking, --remove-blocking <refs>Ele bloqueia estes, ou deixa de bloquear
--stage <name>, --priority <p>, --due <YYYY-MM-DD>eQuantic: um estágio da lista, a prioridade, o dia do prazo (none limpa os dois últimos)
-m, --milestone <title>, --remove-milestone, --remove-typeGitHub: define o milestone, ou tira o milestone ou o tipo
shell
eqs issue edit TASK-41 TASK-42 --add-label api
eqs issue close <ref>

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

-r, --reason <reason>completed (padrão), "not planned" ou duplicate
--duplicate-of <ref>Fecha 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 ao primeiro estágio a 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>

Exclui um item, com tudo o que está abaixo dele, ou uma issue, depois que você digita o identificador ou o número.

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

Comenta num item ou numa issue, ou edita ou exclui o seu último comentário ali.

-b, --body <text>, -F, --body-file <path>, -e, --editorO comentário, pela linha de comando, por um arquivo ou pelo seu editor
--edit-lastTroca o texto do seu último comentário. Com --create-if-none, comenta quando você não tem nenhum
--delete-lastExclui o seu último comentário. --yes pula a confirmação
-w, --webAbre 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 você, que mencionam você, abertos por você.

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 vai para outro space deixa as labels para trás.

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

Trava a conversa: daí em diante só quem pode editar comenta. eqs issue unlock <ref> destrava.

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

Fixa um item no topo do space, primeiro em todas as visões da lista, ou uma issue no repositório. No máximo três de cada, como no GitHub. eqs issue unpin <ref> desafixa.

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

Cria uma branch para um item, num repositório conectado, ou para uma issue, ligada a ela no GitHub. Com --list, lista as branches.

-n, --name <branch>O nome (padrão: o identificador ou o número, depois o título)
-b, --base <branch>De onde ela parte (padrão: a branch padrão do repositório)
-c, --checkoutBusca a branch e faz checkout dela neste clone
--worktree <path>Faz o checkout numa nova worktree neste caminho
-l, --listLista as branches, e se cada uma ainda existe
--branch-repo <owner/name>O repositório da branch (GitHub: um fork)
shell
eqs issue develop TASK-42 -c
Todo subcomando também aceita --gh, -R, --repo e --json [fields], que imprime a resposta crua, ou só os campos citados, separados por vírgula. Um campo que a resposta não tem é recusado antes de qualquer ação, com a lista dos que ela tem. Opções que levam vários valores aceitam os valores repetidos ou separados por vírgula.

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 em outro space)issue.write
commentitem.comment (item.update num item travado)issue.write
deleteitem.deleteissue.delete
developitem.update e scm.write (item.read para --list)issue.write (issue.read para --list)

Entre os papéis embutidos, Reader lê e comenta: tem item.read, item.comment e issue.read. Contributor também cria e altera: toda ação item.*, mais issue.read e issue.write. Só Owner tem issue.delete.

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

No GitHub

Quem faz o trabalho é a conexão do GitHub do seu workspace, então o GitHub mostra o App da conexão como autor do que você cria e comenta, e o eQuantic Space registra quem pediu. @me é o seu login do GitHub, que ele conhece quando você entrou com o GitHub. Senão, escreva o seu login no lugar. status --gh precisa dessa entrada.

Quando o GitHub recusa, o CLI diz por quê: a recusa cita a permissão que falta ao App, e um limite de taxa diz quando ele zera.

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 uma branch). Enquanto uma instalação não as aceita, o GitHub mantém ali as permissões antigas do App e recusa essas escritas, e o CLI cita a permissão que falta.

1
Só no seu próprio App: adicione as duas
O App que o eQuantic Space oferece já as pede. Um workspace que usa o próprio App as adiciona em Settings → Developer settings → GitHub Apps → Edit → Permissions & events: em Repository permissions, ponha Issues e Contents em Read and write e clique em Save changes.
2
Cada instalação as aceita
O GitHub manda 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. Revise ali as permissões pedidas e aceite.
eqs issue delete --gh não tem volta: o GitHub apaga a issue de vez. Por isso só owners têm issue.delete, e o CLI pede que você digite o número da issue antes.