# Build tooling [`build.sh`](tools/build.sh) — production build gate для [`traffic_core`](traffic_core/Cargo.toml). ## Что делает Скрипт: 1. Проверяет OS и архитектуру (Debian/Ubuntu, amd64/x86_64). 2. Проверяет наличие инструментов: `cargo`, `rustc`, `gcc`, `pkg-config`, `file`, `ldd`. 3. Проверяет минимальную версию Rust (`rustc >= 1.85.0`). 4. Запускает quality gate: - `cargo fmt --check` (если не указан `--skip-fmt`), - `cargo clippy --locked --all-targets -- -D warnings`, - `cargo test --locked --release`, - `cargo build --locked --release`. 5. Проверяет собранный бинарь: `file`, `ldd`, `--help`, `sha256sum`. ## Что НЕ делает - Не устанавливает Rust/toolchain автоматически. - Не устанавливает системные зависимости через apt. - Не создаёт production-конфиг автоматически. ## Использование Из корня репозитория: ```bash ./tools/build.sh ``` Опции: - `--skip-fmt` — пропустить шаг `cargo fmt --check`. - `--install` — после успешной сборки установить бинарь и systemd unit. ## Режим `--install` `--install`: 1. Копирует бинарь в `/usr/local/bin/awg2-harness`. 2. Проверяет, что `/etc/awg2-harness/config.toml` уже существует. 3. Копирует [`awg2-harness.service`](awg2-harness.service). 4. Выполняет `systemd-analyze verify` (если доступно). 5. Выполняет `systemctl daemon-reload`. Важно: - Если скрипт запущен от root, команды установки выполняются напрямую. - Если не от root — используется `sudo` (и проверяется его наличие). - Скрипт **не** выполняет `systemctl enable --now` автоматически. Это intentional: включение сервиса и запуск остаются осознанным эксплуатационным шагом.