CLI аргументы argen¶
Справочник аргументов командной строки argen.
Синтаксис¶
Обязательные аргументы¶
| Аргумент | Описание |
|---|---|
--path |
Путь к модели (не может начинаться с .) |
Опциональные аргументы¶
| Аргумент | По умолчанию | Описание |
|---|---|---|
--declaration |
declaration |
Папка с декларациями |
--destination |
generated |
Папка для сгенерированного кода |
--module |
из go.mod |
Имя модуля |
--fixture_path |
- | Путь для тестовых фикстур |
--schema-output |
- | Файл для DDL схемы |
Примеры¶
Базовое использование¶
С фикстурами¶
argen --path "model/repository" \
--declaration "decl" \
--destination "cmpl" \
--fixture_path "testutil/fixture"
С явным модулем¶
Генерация DDL¶
Структура путей¶
project/
├── go.mod # Модуль определяется отсюда
├── model/
│ └── repository/ # --path
│ ├── declaration/ # --declaration (относительно path)
│ │ ├── user.go
│ │ └── product.go
│ └── generated/ # --destination (относительно path)
│ ├── .argen # Маркер-файл
│ ├── user/
│ └── product/
└── testutil/
└── fixture/ # --fixture_path
└── fixture/
└── data/
Маркер-файл .argen¶
При первой генерации создаётся файл .argen в папке назначения:
Назначение:
- Защита от случайной генерации в неправильную директорию
- При отсутствии argen откажется генерировать код
Не удаляйте .argen
Удаление маркера заблокирует генерацию.
Поведение¶
Удаление файлов¶
При каждом запуске все .go файлы в папке назначения удаляются и создаются заново.
Не редактируйте сгенерированный код
Изменения будут потеряны при следующей генерации.
Именование пакетов¶
Имя сгенерированного пакета берётся из имени структуры Fields*:
type FieldsUser struct { ... } // → пакет "user"
type FieldsProduct struct { ... } // → пакет "product"
Ограничения:
- Regex:
^[a-z]{1,20}$ - Только строчные буквы
- Максимум 20 символов
Проверка версии¶
Вывод:
Справка¶
Интеграция с Make¶
.PHONY: generate-models
generate-models: ## Generate ActiveRecord models
argen --path "model/repository" \
--declaration "declaration" \
--destination "generated"
.PHONY: generate-fixtures
generate-fixtures: ## Generate test fixtures
argen --path "model/repository" \
--declaration "declaration" \
--destination "generated" \
--fixture_path "testutil/fixture"
.PHONY: generate-schema
generate-schema: ## Generate DDL schema
argen --path "model/repository" \
--schema-output database/schema.sql
Интеграция с go:generate¶
//go:generate argen --path "../../model/repository" --declaration "declaration" --destination "generated"
package main
Запуск:
Ошибки¶
"path cannot start with ."¶
".argen file not found"¶
Создайте маркер вручную или убедитесь, что папка назначения существует:
"package name must match regex"¶
Имя модели должно соответствовать ^[a-z]{1,20}$:
// ❌ Неправильно
type FieldsUserProfile struct { ... } // "userprofile" > 20 символов
// ✅ Правильно
type FieldsUser struct { ... }
Следующие шаги¶
- Установка — установка argen
- Быстрый старт — первая модель