Pesquisa de código GitHub com filtragem regex de texto completo, do seu cli.
organisation/repository
gh-search
está disponível como um pacote python via pypi.org e requer Python 3.12+
pipx install gh-search
Um token de acesso pessoal válido do GitHub, com escopo repo
, é necessário para recuperar os resultados da pesquisa. Ele pode ser definido em um envvar GITHUB_TOKEN
ou passado para o script por meio da opção --github-token
.
Para pesquisar no GitHub Enterprise, defina o envvar GITHUB_API_URL
para o endpoint da API GitHub v3 da sua organização. por exemplo. GITHUB_API_URL=https://github.mycompany.net/api/v3
. Você também pode usar a opção --github-api-url
para isso.
Invoque com gh-search
e passe uma string de consulta como primeiro argumento. Por exemplo, para pesquisar a palavra “usage” neste repositório:
gh-search usage repo:janeklb/gh-search
Observe que repo:
é um qualificador de pesquisa com suporte nativo pela API de pesquisa do GitHub. Consulte a documentação do código de pesquisa do GitHub para ver quais outros qualificadores estão disponíveis.
Se você estiver procurando por uma string não alfanumérica específica, poderá usar as opções --regex-content-filter
(ou --content-filter
). Isso deve ser combinado com uma consulta válida da API GitHub Search (que produzirá o conjunto de resultados que será posteriormente filtrado).
Por exemplo, se você estiver procurando por uma variável special_var
definida com um valor de caracteres começando com 10
você pode fazer algo como:
gh-search special_var -e " special_var \ s*= \ s*10 "
Usage: gh-search [OPTIONS] QUERY...
QUERY must contain at least one search term, but may also contain search qualifiers
(https://docs.github.com/en/github/searching-for-information-on-github/searching-code)
Options:
--github-token TEXT GitHub Auth Token. Will fall back on GITHUB_TOKEN envvar.
--github-api-url TEXT Override default GitHub API URL. Can also specify via GITHUB_API_URL envvar.
-p, --path-filter TEXT Exclude results whose path (or part of path) does not match this.
-c, --content-filter TEXT Exclude results whose content does not match this.
-e, --regex-content-filter TEXT
Exclude results whose content does not match this regex.
-a, --include-archived Include results from archived repos.
-l, --repos-with-matches Only the names of repos are printed. Equivalent to --output=repo-list
-o, --output TEXT Output style; one of: default, repo-list, json, yaml
-v, --verbose Verbose output.
--help Show this message and exit.
Os valores padrão para opções podem ser especificados por meio de um arquivo de configuração. A localização deste arquivo é baseada em click.get_app_dir
, com gh-search
como o app_name
(por exemplo, ~/Library/Application Support/gh-search/config
no MacOS). Você verá a localização exata do arquivo impressa ao lado do texto de ajuda do --config
do gh-search --help
(ou se você executar com o sinalizador --verbose
).
Os nomes das opções devem ser convertidos para snake_case conforme a nomenclatura dos parâmetros de click
.
Por exemplo, para definir um --github-token
e --github-api-url
padrão, você escreveria o seguinte em seu arquivo de configuração (substituindo <PLACE HOLDERS>
adequadamente):
github_token="<YOUR TOKEN>"
github_api_url="<THE API URL>"
gh-search
verifica seus limites de taxa e solicitará que você continue se sua pesquisa puder:
500
solicitações principais de API10%
de sua cota principal de API Apenas a cota principal da API é verificada porque os filtros do gh-search
podem fazer uso intenso dela. A cota da API de pesquisa não está verificada.
make install-dev
install dev dependências (configure seu próprio ambiente virtual primeiro)make unit
executar testes de unidademake lint
correrem linters