#workflow #build-script #projects #xtask #pattern #cargo-build #tasks

bin+lib xtasks

为使用 xtask 模式的 Rust 项目提供基本工具和任务,简化常见的构建和开发工作流程

2 个版本

0.0.2 2023年12月29日
0.0.1 2023年11月4日

#302 in 配置

Download history 688/week @ 2024-04-27 293/week @ 2024-05-04 187/week @ 2024-05-11 279/week @ 2024-05-18 206/week @ 2024-05-25 257/week @ 2024-06-01 333/week @ 2024-06-08 466/week @ 2024-06-15 382/week @ 2024-06-22 191/week @ 2024-06-29 343/week @ 2024-07-06 326/week @ 2024-07-13 291/week @ 2024-07-20 386/week @ 2024-07-27 342/week @ 2024-08-03 344/week @ 2024-08-10

1,413 每月下载量

MIT/Apache

58KB
543

Logo of XTasks

XTasks

为使用 xtask 模式的 Rust 项目提供基本工具和任务,简化常见的构建和开发工作流程。

Banner of XTasks

Made With Rust Crates.io Lib.rs Docs.rs License Codecov

网站文档报告错误请求功能贡献指南

divider

目录

divider

概述

XTasks 是一个专为符合 xtask 模式的项目设计的 Rust 库,用于简化常见操作和任务。这个模式在 Rust 生态系统中很常见,用于在项目工作区中定义自定义构建、测试和部署脚本。

功能

1. 增强文件操作 (ops.rs)

  • 文件系统工具:提供文件复制和删除等常用文件系统操作。
  • 全局模式文件删除:根据全局模式删除文件,帮助清理临时或生成的文件。

2. XTasks 库介绍 (lib.rs)

  • 使用 xtask 模式简化 Rust 项目的构建和开发工作流程。

3. 宏增强 (macros.rs)

  • 增强打印宏:重新定义了 println!print! 宏,用于格式化控制台输出。
  • 断言宏:用于在代码中定义自定义宏,增强可读性和功能。

4. Cargo XTask 集成 (tasks.rs)

  • 简化开发工作流程:提供开发、测试和维护 Rust 项目的任务。
  • 文档自动化:促进项目文档的自动生成。
  • 持续集成支持:实现持续集成任务以确保代码质量和稳定性。

5. 二进制入口点 (main.rs)

  • XTasks 二进制程序的中央入口点,整合了项目的各个组件。

6. Cargo 构建配置 (powerset.rs)

  • 幂集功能管理:管理 cargo 构建运行中的功能组合,允许指定功能组合的深度。

7. 依赖分析 (bloat.rs)

  • 分析依赖关系,以确定其对构建大小的影響,有助于构建优化。

8. CI 配置管理 (ci.rs)

  • 灵活的持续集成设置:配置持续集成运行的设置,包括编译器版本选择和 Clippy 代码检查选项。

9. 动态文档生成 (docs.rs)

  • 根据源代码更改自动生成和更新文档。

入门

以下说明将帮助您在本地机器上获取项目的副本并运行,以进行开发和测试。

先决条件

您需要在您的系统上安装 Rust 和 Cargo。如果您还没有安装,您可以从官方 Rust 网站安装它们。

安装

要使用 XTasks,将其添加到您的 Cargo.toml 文件中的依赖项。

[dependencies]
xtasks = "0.0.2"

然后,在您的 lib.rsmain.rs 文件中添加

extern crate xtasks;

使用

您可以使用 XTasks 简化和标准化构建、测试和部署您的 Rust 项目的流程。有关更详细的用法示例,请参阅库的文档。

运行测试

要运行测试,请使用以下命令

cargo test

示例

本节提供了基本示例,以演示如何在 Rust 项目中使用 XTasks 的一些关键功能。

文件操作示例

使用 ops.rs 中的增强文件操作

// Assuming you've included the `xtasks` crate
use xtasks::file_operations;

fn main() {
    // Copying a file
    file_operations::copy("path/to/source.file", "path/to/destination.file").unwrap();

    // Removing files based on a glob pattern
    file_operations::remove_files("path/to/temporary/*.tmp").unwrap();
}

宏使用示例

实现自定义的 println! 和 assert! 宏

// Importing macros from xtasks
use xtasks::{println, assert};

fn main() {
    // Using the enhanced println! macro
    println!("This is a formatted {} message", "output");

    // Using a custom assert! macro
    assert!(2 + 2 == 4, "Math error: 2 + 2 should equal 4");
}

CI 配置示例

使用 ci.rs 配置和运行持续集成任务

use xtasks::ci::CI;

fn main() {
    let ci_config = CI::builder()
        .nightly(true)
        .enable_clippy_lints(true)
        .build()
        .unwrap();

    ci_config.run();
}

语义版本控制策略

为了透明度并力求保持向后兼容性,XTasks 遵循 语义版本控制

许可

本项目根据 MIT 许可证和 Apache 许可证(版本 2.0)的条款进行许可。

贡献

我们欢迎所有希望贡献的人。有关更多信息,请参阅贡献说明

向本项目提交的任何形式的贡献(问题、pull 请求等)都必须遵守Rust 的行为准则

除非您明确声明,否则根据 Apache-2.0 许可证定义,您有意提交以包含在作品中并由您提供的内容,将按照上述方式双重许可,而不附加任何额外的条款或条件。

致谢

非常感谢 xtasks 的所有出色的贡献者,感谢他们的帮助和支持。

特别感谢 Rust Reddit 社区为改进此项目提供的大量有用建议。

依赖项

~9–19MB
~243K SLoC