Files
ds-galo/openspec/specs/dev-make-workflow/spec.md
T

56 lines
3.6 KiB
Markdown

# dev-make-workflow Specification
## Purpose
Make-интерфейс разработчика: установка Android-клиента на выбранное устройство и обзор
доступных целей сборки.
## Requirements
### Requirement: Установка Android-приложения через Make-цель
Проект SHALL предоставлять Make-цель `install-android-app`, которая собирает debug-APK
Android-клиента и устанавливает его на выбранное устройство. Повторный запуск SHALL
переустанавливать приложение без ручного удаления.
#### Scenario: Установка на устройство
- **WHEN** цель запущена и устройство выбрано
- **THEN** собирается debug-APK и устанавливается на это устройство
#### Scenario: Повторная установка
- **WHEN** приложение уже установлено и цель запущена снова
- **THEN** установка завершается успешно без ручного удаления приложения
### Requirement: Выбор устройства для установки
Цель установки SHALL брать устройство из явно заданного серийного номера, а при его
отсутствии — из единственного подключённого устройства. Если подключено несколько
устройств и серийный номер не задан, цель SHALL напечатать список устройств и SHALL не
выполнять установку.
#### Scenario: Серийный номер задан
- **WHEN** задан серийный номер устройства
- **THEN** приложение устанавливается именно на это устройство
#### Scenario: Единственное устройство
- **WHEN** серийный номер не задан и подключено ровно одно устройство
- **THEN** приложение устанавливается на него
#### Scenario: Несколько устройств без выбора
- **WHEN** серийный номер не задан и подключено несколько устройств
- **THEN** цель печатает список устройств, не выполняет установку и завершается ненулевым кодом
#### Scenario: Нет устройств
- **WHEN** не подключено ни одного устройства
- **THEN** цель сообщает об ошибке и завершается ненулевым кодом
### Requirement: Обзор доступных Make-целей
Голый `make` (без цели) SHALL печатать список доступных целей и SHALL не запускать
сборку. Любая цель, включая сборку фронтенда, SHALL оставаться доступной по явному имени.
#### Scenario: Голый make
- **WHEN** `make` запущен без цели
- **THEN** печатается список доступных целей, сборка не запускается
#### Scenario: Явная цель
- **WHEN** `make` запущен с именем цели, например `make frontend`
- **THEN** выполняется именно эта цель