mirror of
				https://github.com/TaKO8Ki/gobang.git
				synced 2021-09-19 22:32:56 +03:00 
			
		
		
		
	Merge pull request #58 from TaKO8Ki/manage-cli-version
Manage gobang version
This commit is contained in:
		@@ -2,6 +2,7 @@ use super::{Component, DrawableComponent, EventState};
 | 
			
		||||
use crate::components::command::CommandInfo;
 | 
			
		||||
use crate::config::KeyConfig;
 | 
			
		||||
use crate::event::Key;
 | 
			
		||||
use crate::version::Version;
 | 
			
		||||
use anyhow::Result;
 | 
			
		||||
use itertools::Itertools;
 | 
			
		||||
use std::convert::From;
 | 
			
		||||
@@ -58,7 +59,7 @@ impl DrawableComponent for HelpComponent {
 | 
			
		||||
 | 
			
		||||
            f.render_widget(
 | 
			
		||||
                Paragraph::new(Spans::from(vec![Span::styled(
 | 
			
		||||
                    format!("gobang {}", "0.1.0"),
 | 
			
		||||
                    format!("gobang {}", Version::new()),
 | 
			
		||||
                    Style::default(),
 | 
			
		||||
                )]))
 | 
			
		||||
                .alignment(Alignment::Right),
 | 
			
		||||
 
 | 
			
		||||
@@ -6,6 +6,7 @@ mod config;
 | 
			
		||||
mod database;
 | 
			
		||||
mod event;
 | 
			
		||||
mod ui;
 | 
			
		||||
mod version;
 | 
			
		||||
 | 
			
		||||
#[macro_use]
 | 
			
		||||
mod log;
 | 
			
		||||
 
 | 
			
		||||
							
								
								
									
										50
									
								
								src/version.rs
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										50
									
								
								src/version.rs
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,50 @@
 | 
			
		||||
use std::{env, fmt};
 | 
			
		||||
 | 
			
		||||
#[derive(Default)]
 | 
			
		||||
pub struct Version {
 | 
			
		||||
    major: u32,
 | 
			
		||||
    minor: u32,
 | 
			
		||||
    patch: u32,
 | 
			
		||||
    pre: Option<String>,
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
impl Version {
 | 
			
		||||
    /// read version at compile time from env variables
 | 
			
		||||
    pub fn new() -> Self {
 | 
			
		||||
        let mut res = Self::default();
 | 
			
		||||
        let major_str = env!("CARGO_PKG_VERSION_MAJOR");
 | 
			
		||||
        if let Ok(major) = major_str.parse::<u32>() {
 | 
			
		||||
            res.major = major;
 | 
			
		||||
        }
 | 
			
		||||
        let minor_str = env!("CARGO_PKG_VERSION_MINOR");
 | 
			
		||||
        if let Ok(minor) = minor_str.parse::<u32>() {
 | 
			
		||||
            res.minor = minor;
 | 
			
		||||
        }
 | 
			
		||||
        let patch_str = env!("CARGO_PKG_VERSION_PATCH");
 | 
			
		||||
        if let Ok(patch) = patch_str.parse::<u32>() {
 | 
			
		||||
            res.patch = patch;
 | 
			
		||||
        }
 | 
			
		||||
        let pre_str = env!("CARGO_PKG_VERSION_PRE");
 | 
			
		||||
        res.pre = if pre_str.is_empty() {
 | 
			
		||||
            None
 | 
			
		||||
        } else {
 | 
			
		||||
            Some(pre_str.to_string())
 | 
			
		||||
        };
 | 
			
		||||
        res
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
impl fmt::Display for Version {
 | 
			
		||||
    fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
 | 
			
		||||
        write!(
 | 
			
		||||
            f,
 | 
			
		||||
            "v{}.{}.{}{}",
 | 
			
		||||
            self.major,
 | 
			
		||||
            self.minor,
 | 
			
		||||
            self.patch,
 | 
			
		||||
            self.pre
 | 
			
		||||
                .as_ref()
 | 
			
		||||
                .map_or(String::new(), |pre| format!("-{}", pre.to_string()))
 | 
			
		||||
        )
 | 
			
		||||
    }
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user