Module xtask
xtask - Автоматизация сборки проекта
Этот крейт предоставляет команды автоматизации сборки для воркспейса.
См. [HELP_TEXT] для полного списка доступных команд и информации по использованию.
Types
Struct CiCheckResult
Результат CI проверки.
pub(crate) struct CiCheckResult {
pub(crate) success: bool,
pub(crate) stdout: String,
pub(crate) stderr: String,
}Fields
| Name | Type | Documentation |
|---|---|---|
success | bool | |
stdout | String | |
stderr | String |
Implementations
Trait Implementations
-
Any
-
fn type_id(self: &Self) -> TypeId { /* ... */ }
-
-
Borrow
-
fn borrow(self: &Self) -> &T { /* ... */ }
-
-
BorrowMut
-
fn borrow_mut(self: &mut Self) -> &mut T { /* ... */ }
-
-
Freeze
-
From
-
fn from(t: T) -> T { /* ... */ }Returns the argument unchanged.
-
fn from(output: std::process::Output) -> Self { /* ... */ }
-
-
Into
-
Calls
fn into(self: Self) -> U { /* ... */ }U::from(self).
-
-
RefUnwindSafe
-
Send
-
Sync
-
TryFrom
-
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error> { /* ... */ }
-
-
TryInto
-
fn try_into(self: Self) -> Result<U, <U as TryFrom<T>>::Error> { /* ... */ }
-
-
Unpin
-
UnwindSafe
Struct CargoMetadata
pub(crate) struct CargoMetadata {
pub(crate) packages: Vec<Package>,
}Fields
| Name | Type | Documentation |
|---|---|---|
packages | Vec<Package> |
Implementations
Trait Implementations
-
Any
-
fn type_id(self: &Self) -> TypeId { /* ... */ }
-
-
Borrow
-
fn borrow(self: &Self) -> &T { /* ... */ }
-
-
BorrowMut
-
fn borrow_mut(self: &mut Self) -> &mut T { /* ... */ }
-
-
Deserialize
-
fn deserialize<__D>(__deserializer: __D) -> _serde::__private228::Result<Self, <__D as >::Error>
-
where __D: _serde::Deserializer<”de> { /* … */ } ```
-
DeserializeOwned
-
Freeze
-
From
-
Returns the argument unchanged.
fn from(t: T) -> T { /* ... */ }
-
-
Into
-
Calls
fn into(self: Self) -> U { /* ... */ }U::from(self).
-
-
RefUnwindSafe
-
Send
-
Sync
-
TryFrom
-
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error> { /* ... */ }
-
-
TryInto
-
fn try_into(self: Self) -> Result<U, <U as TryFrom<T>>::Error> { /* ... */ }
-
-
Unpin
-
UnwindSafe
Struct Package
pub(crate) struct Package {
pub(crate) name: String,
}Fields
| Name | Type | Documentation |
|---|---|---|
name | String |
Implementations
Trait Implementations
-
Any
-
fn type_id(self: &Self) -> TypeId { /* ... */ }
-
-
Borrow
-
fn borrow(self: &Self) -> &T { /* ... */ }
-
-
BorrowMut
-
fn borrow_mut(self: &mut Self) -> &mut T { /* ... */ }
-
-
Deserialize
-
fn deserialize<__D>(__deserializer: __D) -> _serde::__private228::Result<Self, <__D as >::Error>
-
where __D: _serde::Deserializer<”de> { /* … */ } ```
-
DeserializeOwned
-
Freeze
-
From
-
Returns the argument unchanged.
fn from(t: T) -> T { /* ... */ }
-
-
Into
-
Calls
fn into(self: Self) -> U { /* ... */ }U::from(self).
-
-
RefUnwindSafe
-
Send
-
Sync
-
TryFrom
-
fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error> { /* ... */ }
-
-
TryInto
-
fn try_into(self: Self) -> Result<U, <U as TryFrom<T>>::Error> { /* ... */ }
-
-
Unpin
-
UnwindSafe
Functions
Function main
pub(crate) fn main() -> anyhow::Result<()> { /* ... */ }Function help
Показать сообщение справки.
Эта функция выводит текст справки в stdout, показывая все доступные команды и их описания.
pub(crate) fn help() -> anyhow::Result<()> { /* ... */ }Function test_unit
Запустить unit-тесты (без e2e).
Исключает крейт e2e-tests из запуска.
pub(crate) fn test_unit(sh: &xshell::Shell) -> anyhow::Result<()> { /* ... */ }Function test_e2e
Запустить e2e-тесты.
Сначала собирает бинарники воркспейса, затем запускает тесты из e2e-tests.
pub(crate) fn test_e2e(sh: &xshell::Shell) -> anyhow::Result<()> { /* ... */ }Function test_doc
Запустить doc-тесты.
nextest не поддерживает doc-тесты, поэтому используем стандартный cargo test.
pub(crate) fn test_doc(sh: &xshell::Shell) -> anyhow::Result<()> { /* ... */ }Function docs_build
Собрать полную документацию.
Эта команда выполняет следующие шаги:
- Запускает тесты и сохраняет результаты в документации
- Генерирует rustdoc JSON для всех крейтов воркспейса
- Конвертирует JSON в Markdown через rustdoc-md
- Устанавливает зависимости Nextra
- Собирает статический сайт документации
Итоговая документация будет доступна в docs/out/.
pub(crate) fn docs_build() -> anyhow::Result<()> { /* ... */ }Function docs_dev
Запустить dev сервер Nextra.
Эта команда:
- Устанавливает зависимости Nextra при необходимости
- Запускает dev сервер с hot-reload
Документация будет доступна по адресу http://localhost:3000 .
pub(crate) fn docs_dev() -> anyhow::Result<()> { /* ... */ }Function docs_rustdoc
Сгенерировать API документацию из rustdoc JSON.
Эта команда:
- Генерирует rustdoc JSON для всех крейтов воркспейса через nightly Rust
- Конвертирует JSON в Markdown через API библиотеки rustdoc-md
- Удаляет строки заголовка перед первым ”# ” хедингом
Сгенерированная документация будет размещена в docs/content/api/.
Требования
- Rust nightly toolchain
pub(crate) fn docs_rustdoc() -> anyhow::Result<()> { /* ... */ }Function docs_ci
Запустить CI проверки и сохранить результаты в документации.
Эта функция создаёт папку docs/content/ci/ и сохраняет результаты:
fmt.md— проверка форматированияclippy.md— линтер Clippyunit-tests.md— unit-тесты (без e2e)e2e-tests.md— e2e-тестыdoctests.md— doc-тесты
pub(crate) fn docs_ci(sh: &xshell::Shell) -> anyhow::Result<()> { /* ... */ }Function write_ci_result
Записать результат CI проверки в markdown файл.
pub(crate) fn write_ci_result(ci_dir: &std::path::Path, filename: &str, title: &str, result: &CiCheckResult, timestamp: &str) -> anyhow::Result<()> { /* ... */ }Function write_ci_index
Записать индексную страницу CI.
pub(crate) fn write_ci_index(ci_dir: &std::path::Path, timestamp: &str, all_passed: bool, checks: &[(&str, &str, bool)]) -> anyhow::Result<()> { /* ... */ }Function now_iso
Получить текущую дату и время в формате ISO 8601 для таймзоны +03:00.
pub(crate) fn now_iso() -> String { /* ... */ }Function strip_header_content
Удалить строки перед первым markdown заголовком (”# ”).
pub(crate) fn strip_header_content(content: &str) -> String { /* ... */ }Function workspace_crates
Получить список крейтов воркспейса.
pub(crate) fn workspace_crates(sh: &xshell::Shell) -> anyhow::Result<Vec<String>> { /* ... */ }Function project_root
Получить корневую директорию проекта.
Эта функция определяет корень проекта, находя родительскую директорию директории манифеста текущего крейта.
Возвращает
Абсолютный путь к корневой директории проекта.
Ошибки
Возвращает ошибку, если:
- Переменная окружения CARGO_MANIFEST_DIR не установлена
- Директория манифеста не имеет родительской директории
pub(crate) fn project_root() -> anyhow::Result<std::path::PathBuf> { /* ... */ }Function ensure_nextest
Проверить наличие cargo-nextest и установить при необходимости.
Эта функция проверяет, установлен ли cargo-nextest в системе.
Если нет — автоматически устанавливает его через cargo install.
pub(crate) fn ensure_nextest(sh: &xshell::Shell) -> anyhow::Result<()> { /* ... */ }Constants and Statics
Constant HELP_TEXT
Текст справки для команды xtask.
Эта константа содержит полное сообщение справки, которое отображается
при запуске cargo run -p xtask -- help.
pub const HELP_TEXT: &str = r#"xtask
Использование:
cargo run -p xtask -- <команда>
Команды:
help Показать это сообщение
fmt Запустить rustfmt
fmt-check Проверить форматирование (CI)
clippy Запустить clippy (воркспейс)
test Запустить все тесты (unit + e2e + doctests)
test-unit Запустить только unit-тесты (без e2e)
test-e2e Запустить только e2e-тесты (собирает бинарники)
ci Запустить fmt-check + clippy + test (профиль CI)
docs Собрать документацию (rustdoc JSON + Nextra)
docs-dev Запустить dev сервер Nextra
docs-rustdoc Сгенерировать API документацию из rustdoc JSON
Примечание:
cargo-nextest устанавливается автоматически при первом запуске тестов
"#;