4.7 KiB
Follow-up Questions (q-003)
Структура данных для переменных окружения
-
Тип
Envсодержит толькоNameиPath:type Env struct { Name string `json:"name"` Path string `json:"path"` }Но
parseLocalsвозвращаетmap[K]map[string]any— т.е.filename → (key → value).Вопрос: Где хранятся сами переменные (key-value pairs)?
- (a) Нужен отдельный тип
EnvVarс ключом и значением? - (b) Добавить поле
Vars map[string]stringвEnv? - (c) Переменные хранятся только на сервере,
Env— только metadata?
Answer: Переменные окружения бывают не только строками, учти это и создай подходящую структуру;
- (a) Нужен отдельный тип
Создание проекта
-
Как создаётся новый проект?
project save -n— обновляет имя существующего проектаproject remove— удаляет проект- Нет команды для создания проекта
Варианты:
- (a)
aevs project create -n "name"— отдельная команда - (b)
aevs syncсоздаёт проект автоматически, еслиproject_idв конфиге пустой - (c) Проекты создаются только через веб-интерфейс сервера
Answer: (b)
Инициализация конфига
-
Как создаётся
aevs.yamlвпервые?aevs syncбез конфига → ошибка "no config found"
Варианты:
- (a) Пользователь создаёт вручную
- (b) Команда
aevs initсоздаёт шаблон конфига - (c)
aevs init+ интерактивные промпты (project name, api_key, scan for env files)
Answer: (c)
Merge: контекст проекта
-
Команда
aevs merge -v "ts1 ts2"— как определяется проект?- Сейчас нет
-c, --configфлага в описании merge - Версии принадлежат конкретному проекту
Нужно добавить:
-c, --configдля чтенияproject_idиз конфига?- Или
-p, --project {uuid}для явного указания?
Answer: Нужно добавить оба флага как опциональные, если ни одного нет выводить ошибку
- Сейчас нет
Sync: "save into current version"
-
В sync описаны два варианта:
- result files creates new version
- result files should be saved into current version
Вопрос по второму варианту:
- "Save into current version" = обновление существующей версии in-place?
- Не создаст ли это конфликты, если другой пользователь уже синхронизировался с этой версией?
- Или имеется в виду что-то другое?
Answer: да, ты прав, это создаст конфликты, поэтому всегда создавай новые версии, пока их кто-то не смерджит;
Wrangler reference
-
По поводу wrangler: Изучил — Cloudflare wrangler использует REST API с Bearer token authentication.
Предлагаю для aevs:
Base URL: configurable (e.g., https://api.aevs.io) Auth: Header `Authorization: Bearer {api_key}` Format: JSON Endpoints: GET /projects → []Project POST /projects → Project (create) PATCH /projects/{id} → Project (update name) DELETE /projects/{id} → void GET /projects/{id}/versions → []Version POST /projects/{id}/versions → Version (create) GET /projects/{id}/versions/{ts} → Version (with full env data) PATCH /projects/{id}/versions/{ts} → Version (update state/merge)Подходит такой интерфейс? Answer: да;
Server Base URL
- Где хранится URL сервера?
- В конфиге
aevs.yaml? - В environment variable (e.g.,
AEVS_API_URL)? - Захардкожен для MVP? Answer: давай указывать его в конфиге;
- В конфиге