Skip to Content

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

NameTypeDocumentation
successbool
stdoutString
stderrString

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

    • fn into(self: Self) -> U { /* ... */ }
      Calls 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

NameTypeDocumentation
packagesVec<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

    • fn from(t: T) -> T { /* ... */ }
      Returns the argument unchanged.
  • Into

    • fn into(self: Self) -> U { /* ... */ }
      Calls 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

NameTypeDocumentation
nameString

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

    • fn from(t: T) -> T { /* ... */ }
      Returns the argument unchanged.
  • Into

    • fn into(self: Self) -> U { /* ... */ }
      Calls 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

Собрать полную документацию.

Эта команда выполняет следующие шаги:

  1. Запускает тесты и сохраняет результаты в документации
  2. Генерирует rustdoc JSON для всех крейтов воркспейса
  3. Конвертирует JSON в Markdown через rustdoc-md
  4. Устанавливает зависимости Nextra
  5. Собирает статический сайт документации

Итоговая документация будет доступна в docs/out/.

pub(crate) fn docs_build() -> anyhow::Result<()> { /* ... */ }

Function docs_dev

Запустить dev сервер Nextra.

Эта команда:

  1. Устанавливает зависимости Nextra при необходимости
  2. Запускает dev сервер с hot-reload

Документация будет доступна по адресу http://localhost:3000 .

pub(crate) fn docs_dev() -> anyhow::Result<()> { /* ... */ }

Function docs_rustdoc

Сгенерировать API документацию из rustdoc JSON.

Эта команда:

  1. Генерирует rustdoc JSON для всех крейтов воркспейса через nightly Rust
  2. Конвертирует JSON в Markdown через API библиотеки rustdoc-md
  3. Удаляет строки заголовка перед первым ”# ” хедингом

Сгенерированная документация будет размещена в docs/content/api/.

Требования

  • Rust nightly toolchain
pub(crate) fn docs_rustdoc() -> anyhow::Result<()> { /* ... */ }

Function docs_ci

Запустить CI проверки и сохранить результаты в документации.

Эта функция создаёт папку docs/content/ci/ и сохраняет результаты:

  • fmt.md — проверка форматирования
  • clippy.md — линтер Clippy
  • unit-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 устанавливается автоматически при первом запуске тестов "#;