#env-var #build #commit #data #branch #info #date-time

构建 build-data

将构建数据包含到您的程序中:日期、rustc 版本、git 提交 & 分支等

5 个版本

0.2.1 2024 年 4 月 18 日
0.2.0 2024 年 4 月 18 日
0.1.5 2023 年 10 月 6 日
0.1.4 2023 年 4 月 16 日
0.1.3 2021 年 4 月 18 日

构建工具 中排名 42

Download history 5587/week @ 2024-04-24 5072/week @ 2024-05-01 5515/week @ 2024-05-08 6254/week @ 2024-05-15 4822/week @ 2024-05-22 4057/week @ 2024-05-29 4939/week @ 2024-06-05 4611/week @ 2024-06-12 5570/week @ 2024-06-19 5728/week @ 2024-06-26 4812/week @ 2024-07-03 5064/week @ 2024-07-10 5148/week @ 2024-07-17 4604/week @ 2024-07-24 5241/week @ 2024-07-31 5662/week @ 2024-08-07

每月下载量 21,688
用于 10 包(8 个直接使用)

Apache-2.0 许可证

32KB
344 行代码(不包括注释)

build-data

crates.io version license: Apache 2.0 unsafe forbidden pipeline status

将构建数据包含到您的程序中。

功能

  • 保存构建时数据
    • Git 提交、分支和脏污度
    • 源代码修改日期和时间
    • Rustc 版本
    • Rust 通道(稳定、夜间或测试版)
  • 所有工作都在您的 build.rs 中完成。
  • 设置环境变量。使用 env! 在您的程序中使用它们。
  • 无宏
  • 无运行时依赖
  • 轻量级构建依赖
  • 禁止(不安全代码)
  • 100% 测试覆盖率

替代方案

  • 为包设置的 cargo 环境变量
    • CARGO_PKG_NAME
    • CARGO_PKG_VERSION
    • CARGO_BIN_NAME
    • 其他
  • vergen
    • 成熟且非常受欢迎
    • 良好的 API,只需使用 env! 即可检索值
    • 出色的测试覆盖率
    • 重型构建依赖
  • build-info
    • 成熟
    • 混乱的 API
    • 使用过程宏

示例

// Cargo.toml
[dependencies]

[build-dependencies]
build-data = "0"

在您的 Cargo.toml 旁边添加一个 build.rs 文件。调用 build_data::set_* 函数来设置变量。

// build.rs

fn main() {
    build_data::set_GIT_BRANCH();
    build_data::set_GIT_COMMIT();
    build_data::set_GIT_DIRTY();
    build_data::set_SOURCE_TIMESTAMP();
    build_data::no_debug_rebuilds();
}

使用 env! 在您的程序中访问变量

// src/bin/main.rs
fn main() {
    // Built from branch=release
    // commit=a5547bfb1edb9712588f0f85d3e2c8ba618ac51f
    // dirty=false
    // source_timestamp=2021-04-14T06:25:59+00:00
    println!("Built from branch={} commit={} dirty={} source_timestamp={}",
        env!("GIT_BRANCH"),
        env!("GIT_COMMIT"),
        env!("GIT_DIRTY"),
        env!("SOURCE_TIMESTAMP"),
    );
}

Cargo Geiger 安全报告


Metric output format: x/y
    x = unsafe code used by the build
    y = total unsafe code found in the crate

Symbols: 
    🔒  = No `unsafe` usage found, declares #![forbid(unsafe_code)]= No `unsafe` usage found, missing #![forbid(unsafe_code)]
    ☢️  = `unsafe` usage found

Functions  Expressions  Impls  Traits  Methods  Dependency

0/0        0/0          0/0    0/0     0/0      🔒  build-data 0.2.1
0/0        1/11         1/1    0/0     0/0      ☢️  ├── chrono 0.4.38
0/0        0/0          0/0    0/0     0/0      ❓  │   └── num-traits 0.2.18
0/0        0/0          0/0    0/0     0/0      🔒  └── safe-regex 0.3.0
0/0        0/0          0/0    0/0     0/0      🔒      └── safe-regex-macro 0.3.0
0/0        0/0          0/0    0/0     0/0      🔒          ├── safe-proc-macro2 1.0.67
0/0        4/4          0/0    0/0     0/0      ☢️          │   └── unicode-ident 1.0.12
0/0        0/0          0/0    0/0     0/0      🔒          └── safe-regex-compiler 0.3.0
0/0        0/0          0/0    0/0     0/0      🔒              ├── safe-proc-macro2 1.0.67
0/0        0/0          0/0    0/0     0/0      🔒              └── safe-quote 1.0.15
0/0        0/0          0/0    0/0     0/0      🔒                  └── safe-proc-macro2 1.0.67

0/0        5/15         1/1    0/0     0/0    

变更日志

  • v0.2.1
    • 添加 set_TARGET_PLATFORM。感谢 tison
    • 在辅助函数中使用 u64 作为时间戳。
  • v0.1.5 - 更新依赖项。感谢 dignifiedquire
  • v0.1.4 - 更新依赖项。
  • v0.1.3 - 更新文档。
  • v0.1.2 - 根据 r/rust 的反馈进行重写。
  • v0.1.1 - 更新文档。
  • v0.1.0 - 初始版本

待办事项

许可协议:Apache-2.0

依赖项

~1.5MB
~25K SLoC