Skip to main content

solana_version/
lib.rs

1#![cfg(feature = "agave-unstable-api")]
2#![cfg_attr(feature = "frozen-abi", feature(min_specialization))]
3
4#[cfg_attr(feature = "frozen-abi", macro_use)]
5#[cfg(feature = "frozen-abi")]
6extern crate solana_frozen_abi_macro;
7
8mod client_ids;
9pub mod v1;
10pub mod v2;
11pub mod v3;
12pub mod v4;
13
14pub use {client_ids::*, v4::*};
15
16pub(crate) fn compute_commit(sha1: Option<&'static str>) -> Option<u32> {
17    u32::from_str_radix(sha1?.get(..8)?, /*radix:*/ 16).ok()
18}
19
20#[macro_export]
21macro_rules! semver {
22    () => {
23        &*format!("{}", $crate::Version::default())
24    };
25}
26
27#[macro_export]
28macro_rules! version {
29    () => {
30        &*format!("{}", $crate::Version::default().as_detailed_string())
31    };
32}
33
34#[cfg(test)]
35mod test {
36    use super::*;
37
38    #[test]
39    fn test_compute_commit() {
40        assert_eq!(compute_commit(None), None);
41        assert_eq!(compute_commit(Some("1234567890")), Some(0x1234_5678));
42        assert_eq!(compute_commit(Some("HEAD")), None);
43        assert_eq!(compute_commit(Some("garbagein")), None);
44    }
45}