eridani 0.1.0

Pure functional scripting, anywhere
Documentation
use std::{env, fs, path};

use rustc_version::{version_meta, Channel};

fn main() {
    let mut out_dir = path::PathBuf::from(env::var("OUT_DIR").unwrap());
    out_dir.push("eridani_version_data.rs");

    let version_data = version_meta().unwrap();
    let rust_major = version_data.semver.major;
    let rust_minor = version_data.semver.minor;
    let rust_patch = version_data.semver.patch;
    let pre = version_data.semver.pre.as_str();
    let channel = match version_data.channel {
        Channel::Dev => "RustChannel::Dev",
        Channel::Nightly => "RustChannel::Nightly",
        Channel::Beta => "RustChannel::Beta",
        Channel::Stable => "RustChannel::Stable",
    };

    let eridani_major: u64 = env::var("CARGO_PKG_VERSION_MAJOR")
        .unwrap()
        .parse()
        .unwrap();
    let eridani_minor: u64 = env::var("CARGO_PKG_VERSION_MINOR")
        .unwrap()
        .parse()
        .unwrap();
    let eridani_patch: u64 = env::var("CARGO_PKG_VERSION_PATCH")
        .unwrap()
        .parse()
        .unwrap();

    let contents = format!(
        "
        const RUST_VERSION_DATA: RustVersionData = RustVersionData {{
            major: {rust_major},
            minor: {rust_minor},
            patch: {rust_patch},
            pre: \"{pre}\",
            channel: {channel},
        }};

        pub const VERSION_DATA: VersionData = VersionData {{
            rust_version: RUST_VERSION_DATA,
            major: {eridani_major},
            minor: {eridani_minor},
            patch: {eridani_patch},
        }};
    "
    );
    let _ = fs::write(out_dir, contents);
}