Использование Github cli с несколькими репозиториями

Я использую Github CLI уже некоторое время, и
я обнаружил, что он действительно хорош при работе в контексте одного
репозитория. Но что происходит, когда вы отвечаете за работу в десятках
репозиториях? Следить за многими репозиториями можно благодаря gh api
подкоманде и псевдонимам!

gh api позволяет вам вызывать любую конечную точку github api, а для моих конкретных потребностей
потребностей, конечная точка search/issues является наиболее полезной, так как она ищет как в
вопросы и PR.

Есть два разных способа форматирования ответов: либо с флагом --jq,
который использует синтаксис jq, либо --template
который использует синтаксис Go text/template. I
обнаружил, что создание прототипов с помощью синтаксиса jq было приятным, но цвет и форматирование
но выбор цвета и форматирования во флаге --template покорил меня.

Обратите внимание, что аргументы --template в приведенных ниже примерах все одинаковые, и они
выводятся примерно так (но с некоторыми вкусовыми цветами терминала, которые не
в уценке):

[  98] chore(deps): update dependency maven to v3.6 (15 days ago)
  https://github.com/GoogleCloudPlatform/cloud-run-samples/pull/98
Войти в полноэкранный режим Выйти из полноэкранного режима

Более подробную информацию о форматировании вывода можно найти в справке по форматированию gh.
help.

Мои проблемы/PR, которые необходимо проследить

На моей работе моя команда отвечает за уход и кормление множества различных
публичных репозиториев github, что требует много работы по устранению проблем и PR.
последующих действий. Переключение на каждый из этих контекстов для запуска gh issues и

для поиска открытых проблем и PR в любом репозитории, который назначен мне:

gh api -XGET search/issues -f q='assignee:@me is:open  ' 
  --template '{{range .items -}}[{{.number | printf "%5.f" |autocolor "blue" }}] {{.title}} ({{ timeago .updated_at | autocolor "yellow+d" }}) {{printf "n  " }}{{.html_url}} {{print "n" -}}{{end}}'
Войти в полноэкранный режим Выйти из полноэкранного режима

Набирать эту команду не очень весело, поэтому я создал псевдоним в инструменте gh (не путать с псевдонимами оболочки). Однако использование команды gh alias set потребовало бы экранирования кавычек, поэтому я решил редактировать файл конфигурации напрямую — он находится по адресу ~/.config/gh/config.yaml на моей машине linux. Добавление следующего блока в список aliases создаст псевдоним:

    mine: |
        api -XGET search/issues -f q="assignee:@me is:open"
        --template '{{range .items -}}
        [{{.number | printf "%4.f" |autocolor "blue" }}] {{.title}} ({{timeago .updated_at | autocolor "yellow+d" }})
        {{print "n  " }}{{.html_url}} {{print "n" -}}
        {{end}}'"
Войти в полноэкранный режим Выйти из полноэкранного режима

(Обратите внимание, что синтаксис yaml heredoc (|) используется для разрешения многострочной строки.
Убедитесь, что отступы одинаковы для всех строк, иначе могут возникнуть проблемы при
с разбором вашей конфигурации!)

Теперь я могу увидеть все свои назначенные проблемы и PR, выполнив команду gh mine!

Невостребованные командные обзоры

Отслеживание проблем и PR, ожидающих рассмотрения командой (которые никто еще не
еще никто не заявил), может быть выполнено с помощью аналогичного подхода. Обратите внимание, что вам нужно будет обновить
поисковый запрос, чтобы использовать собственную организацию и команду Github в запросе ниже.

gh api -XGET search/issues -f q='team-review-requested:yourorg/yourteam is:open -review:approved no:assignee' 
--template '{{range .items -}}[{{.number | printf "%4.f" |autocolor "blue" }}] {{.title}} ({{timeago .updated_at | autocolor "yellow+d" }}) {{printf "n  " }}{{.html_url}} {{print "n" -}}{{end}}'
Вход в полноэкранный режим Выход из полноэкранного режима

или готов ваш config.yml:

    teamreviews: |
        api -XGET search/issues -f q="team-review-requested:yourorg/yourteam is:open -review:approved no:assignee"
        --template '{{range .items -}}
        [{{.number | printf "%4.f" |autocolor "blue" }}] {{.title}} ({{timeago .updated_at | autocolor "yellow+d" }})
        {{printf "n  " }}{{.html_url}} {{print "n" -}}
        {{end}}'"
Вход в полноэкранный режим Выйти из полноэкранного режима

Другие полезные поиски

Заменив поисковый запрос (параметр q) на другой поисковый запрос github
запрос, вы можете использовать этот метод для отображения других удобных результатов.

  • Отзывы, которые я одобрил, но не объединил: reviewed-by:@me review:approved
    is:open
    .
  • Незавершенные отзывы, которые я назначил непосредственно: user-review-requested:@me
    -review:approved
    (обратите внимание на префикс -, который будет соответствовать неодобренным PR).

Я обнаружил, что использую одно и то же отображение с разными поисковыми запросами, поэтому я закончил тем.
я создал псевдоним для произвольного поиска:

    # global search, given a *quoted* github search string.
    gsearch: |
        api -XGET search/issues -f q="$1"
        --template '{{range .items -}}
        [{{.number | printf "%4.f" |autocolor "green" }}] {{.title}} ({{timeago .updated_at | autocolor "yellow+d" }})
        {{- printf "n  " }}{{.html_url}} {{println -}}
        {{end}}'
Войти в полноэкранный режим Выйти из полноэкранного режима

Будущие направления

Я бы хотел иметь немного дополнительной информации об этих PR, например, о том.
проходят ли они необходимые проверки, в одном и том же выводе. Чтобы достичь этого,
мне, вероятно, придется написать
gh-расширение.
Чтобы избежать повторения существующей функциональности gh, существует библиотека go-gh
библиотека.

Используете ли вы другие способы поиска на github или трюки gh, чтобы следить за своей работой? Расскажите
расскажите мне об этом в комментариях!

Оставьте комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *