gitverse-cli

module
v0.4.0 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Sep 2, 2026 License: MIT

README

GitVerse CLI

gvc - командная строка для GitVerse на базе неофициального Go SDK.

Первый релиз использует только token-based аутентификацию. OAuth, browser login, device flow, username/password и SSH-key login пока намеренно не поддерживаются.

Установка

Скачайте архив для своей ОС и архитектуры на странице релизов GitVerse, распакуйте gvc (gvc.exe для Windows) и добавьте каталог с бинарным файлом в PATH. Проверяйте целостность скачанных файлов по checksums.txt.

Из локального checkout исходников:

go install ./cmd/gvc

Для локальной разработки:

make verify
go run ./cmd/gvc --help

Аутентификация

Добавить именованный логин:

gvc auth login add main --token "$GITVERSE_TOKEN"

Указать base URL:

gvc auth login add staging \
  --base-url https://api.gitverse.ru \
  --token "$GITVERSE_TOKEN"

Посмотреть логины без вывода токенов:

gvc auth login list
gvc auth login show main

Выбрать логин по умолчанию:

gvc auth login set-default main

Для CI и одноразовых запусков можно не сохранять логин:

GITVERSE_TOKEN=... gvc whoami
GITVERSE_TOKEN=... GITVERSE_BASE_URL=https://api.gitverse.ru gvc repo list

Частые команды

gvc, gvc --help и команды-группы без подкоманды, например gvc issue или gvc run, показывают справку со списком доступных подкоманд. Для выполнения операции используйте явную подкоманду: list, view, create и т.д.

Repo-scoped команды следуют стилю gh: по умолчанию gvc берет репозиторий из текущего git remote, а для явного выбора используйте -R/--repo или GITVERSE_REPO. Позиционные аргументы repo-scoped команд считаются целевыми значениями команды, а не репозиторием; если ref, tag, workflow или path содержит /, репозиторий всё равно передавайте через -R, env или git-контекст.

gvc whoami
gvc auth status
gvc config list
gvc repo list
gvc repo list alice --type owner --sort updated --direction desc
gvc repo view owner/repo
gvc pr list -R owner/repo --state open
gvc pr view 42 -R owner/repo
gvc issue list -R owner/repo --state open
gvc issue create -R owner/repo --title "Ошибка" --assignee alice --label bug
gvc issue edit -R owner/repo 42 --add-label urgent --remove-assignee alice
gvc issue close -R owner/repo 42 --comment "Исправлено"
gvc issue reopen -R owner/repo 42
gvc issue parent -R owner/repo 42
gvc issue sub-issues -R owner/repo 42
gvc issue create -R owner/repo --title "Подзадача" --parent 42
gvc label list -R owner/repo
gvc label create -R owner/repo bug --color ff0000
gvc repo branches -R owner/repo main
gvc pr review -R owner/repo 42 --approve --body "Готово"
gvc pr reviews list -R owner/repo 42
gvc release list -R owner/repo
gvc run list -R owner/repo
gvc run list -R owner/repo --workflow build.yml
gvc workflow list -R owner/repo
gvc workflow view build.yml -R owner/repo
gvc workflow run build.yml -R owner/repo --branch main --input env=prod
gvc artifact download 42 -R owner/repo --output-file artifact.zip
gvc repo commits compare -R owner/repo --base main/trunk --head feature/one
gvc meta capabilities --command api --json-compact
gvc meta context --json-compact
gvc api /user

JSON output:

gvc repo view owner/repo --json
gvc repo view owner/repo --output json
gvc auth status --json-compact
gvc auth status --output json-compact
GITVERSE_REPO=owner/repo gvc pr list --output json

Machine-readable output:

gvc meta capabilities --command api --json-compact
gvc meta context --json-compact
gvc meta context --verify --json-compact
gvc repo delete owner/repo --json-errors
gvc issue close -R owner/repo 42 --comment "Исправлено" --dry-run --json-compact

Pagination:

gvc repo list --limit 30 --per-page 10
gvc repo list --limit 30 --per-page 10 --page-info --json-compact
gvc repo list --page-info --json-compact --jq .page_info

List commands follow the gh style, with one REST-specific addition: --limit is the client-side maximum number of items to print, while --per-page is the server-side page size. With --page-info, JSON output is wrapped as {"data": ..., "page_info": ...}. page_info.total_count is set only when GitVerse returns X-Total-Count; otherwise it is null. When the API returns Link: rel="last", page_info includes last_page, total_pages and remaining_pages.

Для поддерживаемых мутаций --dry-run не выполняет API-запросы. Preview сохраняет прежние поля method, path и body, а для многошаговых issue-команд дополнительно возвращает упорядоченный steps[]. Это относится и к созданию issue с родителем, и к повторяемым --add-sub-issue / --remove-sub-issue. repo migrate --dry-run не читает credential env vars и показывает source_token / source_password только как <redacted>.

Для endpoint-ов без отдельной typed-команды используйте raw REST escape hatch:

gvc api /repos/owner/repo
gvc api --method POST --input payload.json /some/endpoint

Область покрытия

CLI exposes команды только для операций, которые уже есть в gitverse-go-sdk. Если нужен новый GitVerse API workflow, сначала добавьте и протестируйте метод в SDK, затем добавляйте CLI-команду.

OpenAPI v1.9 добавляет 19 typed workflows: issue types организации, фильтр роли участников и репозитории команды, миграцию и статус репозитория, полное чтение и фильтры веток, repository labels, parent/sub-issue связи, прямые реакции issue, pull request reviews и inline review comments. Расширены фильтры repo list и issue list. Подробное соответствие UX GitHub CLI зафиксировано в docs/GITHUB_CLI_REFERENCE.md.

Миграция JSON в v0.4.0: ответы теперь используют только канонические поля v1.9. Issue.is_locked заменено на locked, PullRequest.is_draft — на draft, а время проверки commit signature сериализуется как verification.verified_at. Скрипты, которые читали прежние ключи, нужно обновить до установки v0.4.0.

Формы команд и флагов сверены с локальным исходным checkout GitHub CLI в ../.codex/cli/cli: repo list [<username>], workflow list/view, run list -w, повторяемые --assignee/--label и --add/--remove-*. GitVerse API не поддерживает close reason, duplicate relation, projects, milestones и templates, поэтому такие GitHub-only флаги намеренно не добавлены.

Текущие группы команд:

  • auth, config, whoami, completion
  • user, email
  • repo, pr, issue, label, release
  • run, workflow, artifact, variable, secret, runner
  • org, team, favorite, pages, webhook, smartclass, meta, api

Разработка

Проект устроен как Go-приложение:

cmd/gvc/main.go
internal/app
internal/commands
internal/config
internal/auth
internal/client
internal/output
internal/flags
internal/testutil

Не добавляйте публичный pkg/ без отдельного требования. Публичный Go API для работы с GitVerse находится в gitverse-go-sdk, а CLI-пакеты остаются под internal/.

Проверка:

make verify

Default verification не требует сети и живых GitVerse credentials.

Собрать release artifacts локально:

make release-dist VERSION=v0.4.0

Live smoke checks намеренно остаются opt-in и должны запускаться только против одноразовых ресурсов.

Сообщество

Directories

Path Synopsis
cmd
gvc command
gvc-docsite command
internal
app
auth
Package auth resolves token-only authentication for GitVerse CLI commands.
Package auth resolves token-only authentication for GitVerse CLI commands.
client
Package client constructs GitVerse SDK clients from CLI configuration.
Package client constructs GitVerse SDK clients from CLI configuration.
commands
Package commands contains GitVerse CLI command groups.
Package commands contains GitVerse CLI command groups.
config
Package config reads and writes GitVerse CLI configuration.
Package config reads and writes GitVerse CLI configuration.
flags
Package flags defines shared CLI flags and argument parsers.
Package flags defines shared CLI flags and argument parsers.
gitcontext
Package gitcontext detects repository context for commands.
Package gitcontext detects repository context for commands.
output
Package output renders human-readable and JSON command output.
Package output renders human-readable and JSON command output.
testutil
Package testutil provides offline helpers for CLI tests.
Package testutil provides offline helpers for CLI tests.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL