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 v3;
10pub mod v4;
11
12pub use {client_ids::*, v4::*};
13
14pub(crate) fn compute_commit(sha1: Option<&'static str>) -> Option<u32> {
15 u32::from_str_radix(sha1?.get(..8)?, 16).ok()
16}
17
18#[macro_export]
19macro_rules! semver {
20 () => {
21 &*format!("{}", $crate::Version::default())
22 };
23}
24
25#[macro_export]
26macro_rules! version {
27 () => {
28 &*format!("{}", $crate::Version::default().as_detailed_string())
29 };
30}
31
32#[cfg(test)]
33mod test {
34 use super::*;
35
36 #[test]
37 fn test_compute_commit() {
38 assert_eq!(compute_commit(None), None);
39 assert_eq!(compute_commit(Some("1234567890")), Some(0x1234_5678));
40 assert_eq!(compute_commit(Some("HEAD")), None);
41 assert_eq!(compute_commit(Some("garbagein")), None);
42 }
43}