1pub mod commands;
7pub mod config;
8mod tls;
9pub mod utils;
10
11pub use config::Config;
13
14pub const VERSION: &str = env!("CARGO_PKG_VERSION");
16pub const VERSION_MAJOR: u32 = 0;
17pub const VERSION_MINOR: u32 = 1;
18pub const VERSION_PATCH: u32 = 0;
19
20#[derive(Debug, thiserror::Error)]
22#[error("ToRSh CLI version {required_major}.{required_minor} or higher required, but got {have_major}.{have_minor}")]
23pub struct VersionMismatch {
24 pub required_major: u32,
26 pub required_minor: u32,
28 pub have_major: u32,
30 pub have_minor: u32,
32}
33
34pub fn check_version(required_major: u32, required_minor: u32) -> Result<(), VersionMismatch> {
36 if VERSION_MAJOR < required_major
37 || (VERSION_MAJOR == required_major && VERSION_MINOR < required_minor)
38 {
39 return Err(VersionMismatch {
40 required_major,
41 required_minor,
42 have_major: VERSION_MAJOR,
43 have_minor: VERSION_MINOR,
44 });
45 }
46 Ok(())
47}
48
49#[cfg(test)]
50mod tests {
51 use super::*;
52
53 #[test]
54 fn test_version_check() {
55 assert!(check_version(0, 1).is_ok());
56 assert!(check_version(1, 0).is_err());
57 }
58}