| .forgejo/workflows | ||
| .verta-recall | ||
| cmd/vsetup | ||
| docs | ||
| internal | ||
| scripts | ||
| .gitignore | ||
| .golangci.yml | ||
| .goreleaser.yaml | ||
| bootstrap.sh | ||
| go.mod | ||
| go.sum | ||
| README.md | ||
verta-setup
Единая точка входа онбординга dev-инфры Verta. Go-CLI vsetup: оркестратор +
embedded-манифест. Каждая репа экосистемы владеет своим install.sh — vsetup
ведёт человека по шагам, ставит бинари и проверяет результат.
Быстрый старт (новая машина)
curl -fsSL https://forgejo.vertaspace.com/verta/verta-setup/raw/branch/main/bootstrap.sh | sh
bootstrap.sh спросит Forgejo PAT, скачает vsetup из Releases (с проверкой
checksums) и запустит гайдовый визард vsetup setup.
Команды
| Команда | Что делает |
|---|---|
vsetup setup |
Гайдовый визард онбординга: prereqs → креды → клон → бинари → инсталлеры → хуки → doctor; --from <шаг>, --yes, идемпотентен |
vsetup doctor |
Stateless-диагностика: бинари+версии vs latest, хуки, MCP, маркеры, счётчики; --json; провалы → exit ≠ 0 |
vsetup update |
Re-pull реп + переустановка бинарей (включая self-update) и инсталлеров |
vsetup install <component> |
Точечная установка/починка компонента манифеста |
vsetup manifest |
Печатает карту экосистемы: бинари, инсталлеры, хуки, счётчики |
vsetup version |
Версия CLI |
Архитектура
Оркестратор + манифест. internal/manifest/manifest.yaml (зашит через
embed.FS) — единственный источник правды: какие репы клонить, какие бинари
ставить из Forgejo Releases, какие инсталлеры звать и какими managed-маркерами
проверять результат. Логика установки конкретной репы живёт в самой репе —
vsetup её не дублирует.
MCP-записи с env. stdio-MCP в mcp: может объявить переменные окружения
(env:), которые vsetup прокинет в claude mcp add -e K=V:
type: literal— несекретное значение прямо в манифесте (value— само значение).type: required-passthrough— секрет:valueхранит имя env-переменной, значение читается из окружения процесса при регистрации и в git не попадает. Пустое значение → сервер не регистрируется (fail-closed), печатается только имя.
Слои — по канону экосистемы (паттерн vobs):
cmd/vsetup composition root (cobra-провода)
internal/handler/cli тела команд (I/O параметрами, тестируемые)
internal/service/ creds, gitops, release, installer, hookwire, doctor
internal/manifest карта экосистемы + валидация
internal/pkg/term наратив визарда: шаги, счётчики, prompt/confirm
Разработка
go build ./cmd/vsetup
go test ./...
golangci-lint run
Релиз: тег v* → .forgejo/workflows/release.yml → goreleaser → Forgejo
Releases (архивы + checksums.txt).
Эта репа — публичная (единственная в org): bootstrap.sh должен качаться без кредов, иначе курица-яйцо. Секретов здесь нет и быть не должно.
План — Linear, проект «vsetup: единый онбординг dev-инфры + чистка CLI-имён»
(label setup). Решения — docs/decisions/.