banyanfs 0.2.1

A modern end-to-end encrypted filesystem built on distributed block replication primitives
Documentation
use time::format_description::well_known::Rfc3339;
use time::OffsetDateTime;

fn report_build_profile() {
    println!(
        "cargo:rustc-env=BUILD_PROFILE={}",
        std::env::var("PROFILE").unwrap()
    );
}

#[allow(clippy::vec_init_then_push)]
fn report_enabled_features() {
    let mut enabled_features: Vec<&str> = Vec::new();

    #[cfg(feature = "default")]
    enabled_features.push("default");

    #[cfg(feature = "banyan-api")]
    enabled_features.push("banyan-api");

    #[cfg(feature = "pem")]
    enabled_features.push("pem");

    #[cfg(feature = "strict")]
    enabled_features.push("strict");

    #[cfg(feature = "tomb-compat")]
    enabled_features.push("tomb-compat");

    if enabled_features.is_empty() {
        enabled_features.push("none");
    }

    println!(
        "cargo:rustc-env=BUILD_FEATURES={}",
        enabled_features.join(",")
    );
}

fn report_repository_version() {
    let git_describe = std::process::Command::new("git")
        .args(["describe", "--always", "--dirty", "--long", "--tags"])
        .output()
        .unwrap();

    let long_version = String::from_utf8(git_describe.stdout).unwrap();
    println!("cargo:rustc-env=REPO_VERSION={}", long_version);

    let build_timestamp = OffsetDateTime::now_utc().format(&Rfc3339).unwrap();
    println!("cargo:rustc-env=BUILD_TIMESTAMP={build_timestamp}");
}

fn main() {
    report_repository_version();
    report_build_profile();
    report_enabled_features();
}