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