Поиск кода GitHub с полнотекстовой фильтрацией регулярных выражений прямо из вашего командного интерфейса.
organisation/repository
gh-search
доступен в виде пакета Python на pypi.org и требует Python 3.12+.
pipx install gh-search
Для получения результатов поиска необходим действительный токен личного доступа GitHub с областью repo
. Его можно установить в envvar GITHUB_TOKEN
или передать в скрипт через параметр --github-token
.
Для поиска в GitHub Enterprise установите envvar GITHUB_API_URL
для конечной точки API GitHub v3 вашей организации. например. GITHUB_API_URL=https://github.mycompany.net/api/v3
. Вы также можете использовать для этого опцию --github-api-url
.
Вызовите с помощью gh-search
и передайте строку запроса в качестве первого аргумента. Например, чтобы найти слово «использование» в этом репозитории:
gh-search usage repo:janeklb/gh-search
Обратите внимание, что repo:
— это квалификатор поиска, изначально поддерживаемый API поиска GitHub. См. документацию по коду поиска GitHub, чтобы узнать, какие еще квалификаторы доступны.
Если вы ищете определенную небуквенно-цифровую строку, вы можете использовать параметры --regex-content-filter
(или --content-filter
). Это необходимо объединить с допустимым запросом GitHub Search API (который создаст набор результатов, который впоследствии будет отфильтрован).
Например, если вы ищете переменную special_var
, для которой установлено значение символов, начинающихся с 10
вы можете сделать что-то вроде:
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.
Значения по умолчанию для параметров можно указать через файл конфигурации. Местоположение этого файла определяется click.get_app_dir
с gh-search
в качестве app_name
(например, ~/Library/Application Support/gh-search/config
в MacOS). Вы увидите точное местоположение файла, распечатанное рядом с текстом справки --config
для gh-search --help
(или если вы запустите с флагом --verbose
).
Имена опций должны быть преобразованы в Snake_case в соответствии с именованием параметра click
.
Например, чтобы установить --github-token
и --github-api-url
по умолчанию, вы должны написать следующее в свой файл конфигурации (соответственно заменив <PLACE HOLDERS>
):
github_token="<YOUR TOKEN>"
github_api_url="<THE API URL>"
gh-search
проверит ваши ограничения скорости и предложит вам продолжить, если ваш поиск может:
500
основных запросов API10%
вашей основной квоты API Проверяется только квота ядра API, поскольку фильтры gh-search
могут интенсивно ее использовать. Квота API поиска не проверяется.
make install-dev
install dev зависимости (сначала настройте собственную виртуальную среду)make unit
запускать модульные тестыmake lint
запускать линтеры