Búsqueda de código de GitHub con filtrado de expresiones regulares de texto completo, desde su cli.
organisation/repository
gh-search
está disponible como paquete de Python a través de pypi.org y requiere Python 3.12+
pipx install gh-search
Se requiere un token de acceso personal de GitHub válido, con alcance repo
, para recuperar los resultados de la búsqueda. Se puede configurar en un entorno GITHUB_TOKEN
o pasar al script mediante la opción --github-token
.
Para buscar en GitHub Enterprise, configure el envvar GITHUB_API_URL
en el punto final API de GitHub v3 de su organización. p.ej. GITHUB_API_URL=https://github.mycompany.net/api/v3
. También puedes usar la opción --github-api-url
para esto.
Invoque con gh-search
y pase una cadena de consulta como primer argumento. Por ejemplo, para buscar la palabra "uso" en este repositorio:
gh-search usage repo:janeklb/gh-search
Tenga en cuenta que repo:
es un calificador de búsqueda compatible de forma nativa con la API de búsqueda de GitHub. Consulte la documentación del código de búsqueda de GitHub para ver qué otros calificadores están disponibles.
Si está buscando una cadena no alfanumérica específica, puede utilizar las opciones --regex-content-filter
(o --content-filter
). Esto debe combinarse con una consulta válida de la API de búsqueda de GitHub (que producirá el conjunto de resultados que posteriormente se filtrará).
Por ejemplo, si está buscando una variable special_var
configurada con un valor de caracteres que comience con 10
podría hacer 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.
Los valores predeterminados para las opciones se pueden especificar mediante un archivo de configuración. La ubicación de este archivo se basa en click.get_app_dir
, con gh-search
como app_name
(por ejemplo, ~/Library/Application Support/gh-search/config
en MacOS). Verá la ubicación exacta del archivo impresa junto al texto de ayuda de --config
de gh-search --help
(o si ejecuta con el indicador --verbose
).
Los nombres de las opciones deben convertirse a Snake_case según el nombre del parámetro de click
.
Por ejemplo, para establecer un --github-token
y --github-api-url
predeterminado, escribiría lo siguiente en su archivo de configuración (reemplazando <PLACE HOLDERS>
en consecuencia):
github_token="<YOUR TOKEN>"
github_api_url="<THE API URL>"
gh-search
verifica sus límites de tarifas y le pedirá que continúe si su búsqueda puede:
500
solicitudes API principales10%
de su cuota principal de API Solo se verifica la cuota de API principal porque los filtros de gh-search
pueden hacer un uso intensivo de ella. La cuota de API de búsqueda no está marcada.
make install-dev
instale dependencias de desarrollo (primero configure su propio entorno virtual)make unit
ejecute pruebas unitariasmake lint
corra linters