Você pode fazer uma solicitação HTTP GET para a API REST do GitHub para consultar uma lista de repositórios pertencentes a um determinado usuário. Eu vou usar wget
para o pedido, que deve vir pré-instalado no Ubuntu. Uma ferramenta alternativa poderia ser, e. curl
.
A resposta é um objeto JSON bastante grande, portanto, decidi usar jshon
(instalá-lo com sudo apt install jshon
) como analisador JSON para extrair apenas os nomes do repositório. Você também pode ver a resposta completa ou usar qualquer outro método de análise que desejar. Se for apenas para leitores humanos e você não se importar muito com a formatação, bastando percorrê-lo com grep full_name
já deve ser suficiente.
Então, vamos começar com o comando. Para obter uma lista dos meus repositórios públicos do GitHub (obviamente, o nome do usuário é "ByteCommander"), eu executaria isso:
wget -qO- 'https://api.github.com/users/ByteCommander/repos' | jshon -a -e 'full_name' -u
Você deve obter alguma saída semelhante a essas linhas (apenas mais algumas ...):
ByteCommander/AdventOfCode
ByteCommander/ByteCommander.github.io
ByteCommander/ChatExchange6
ByteCommander/dynamodb-local
O comando acima pode ser dividido na solicitação HTTP feita por wget
, que obtém sua resposta emitida no STDOUT e canalizada para o analisador JSON que extrai as informações relevantes.
wget -qO- 'https://api.github.com/users/ByteCommander/repos'
Isso obviamente envia uma solicitação para o URL fornecido. Substitua ByteCommander
pelo seu nome de usuário do GitHub. As -qO-
são opções que modificam como wget
produz a resposta. É a abreviação de -q
(silencioso, sem saída de progresso / status) e -O -
(o arquivo de saída é STDOUT). Leia mais sobre isso em man wget
.
jshon -a -e 'full_name' -u
Isso faz com que o analisador jshon
leia dados JSON de STDIN (onde a saída de wget
é canalizada) e analisa-os de acordo com as opções especificadas. -a
aplica a seguinte operação em todos os elementos da matriz de resposta: -e 'full_name'
, que extrai a propriedade "full_name"
dos objetos aos quais ela é aplicada. -u
finalmente apenas remove as aspas ao redor dos valores de string extraídos. Leia mais sobre isso em man jshon
.
Você pode encontrar uma explicação detalhada da API REST do GitHub v3 e especialmente o endpoint list-user-repositories e seu formato de resposta JSON em sua documentação oficial .