use std::fmt::Display;
use serde::{Deserialize, Serialize};
use cuprate_constants::build::{BUILD, COMMIT};
use cuprate_rpc_types::{CORE_RPC_VERSION, CORE_RPC_VERSION_MAJOR, CORE_RPC_VERSION_MINOR};
use cuprate_types::HardFork;
use crate::{
constants::{MAJOR_VERSION, MINOR_VERSION, PATCH_VERSION, VERSION},
killswitch::KILLSWITCH_ACTIVATION_TIMESTAMP,
};
#[derive(Clone, Debug, PartialEq, Eq, PartialOrd, Ord, Hash, Serialize, Deserialize)]
pub struct CupratedVersionInfo {
major_version: u8,
minor_version: u8,
patch_version: u8,
rpc_major_version: u32,
rpc_minor_version: u32,
rpc_version: u32,
hardfork: u8,
blockchain_db_version: u64,
semantic_version: &'static str,
build: &'static str,
commit: &'static str,
killswitch_timestamp: u64,
}
impl CupratedVersionInfo {
pub fn new() -> Self {
Self {
major_version: MAJOR_VERSION.parse().unwrap(),
minor_version: MINOR_VERSION.parse().unwrap(),
patch_version: PATCH_VERSION.parse().unwrap(),
rpc_major_version: CORE_RPC_VERSION_MAJOR,
rpc_minor_version: CORE_RPC_VERSION_MINOR,
rpc_version: CORE_RPC_VERSION,
blockchain_db_version: cuprate_blockchain::DATABASE_VERSION,
hardfork: HardFork::LATEST.as_u8(),
semantic_version: VERSION,
build: BUILD,
commit: COMMIT,
killswitch_timestamp: KILLSWITCH_ACTIVATION_TIMESTAMP,
}
}
}
#[cfg(test)]
mod tests {
use super::CupratedVersionInfo;
#[test]
fn new() {
CupratedVersionInfo::new();
}
}