diff --git a/cl-cli/src/app.rs b/cl-cli/src/app.rs index 016b567..08e1f61 100644 --- a/cl-cli/src/app.rs +++ b/cl-cli/src/app.rs @@ -2,12 +2,14 @@ use super::subcommands::{config::Config, exec::Exec, misc::Misc, share::Share}; use clap::{Parser, Subcommand as ClapSubcommand}; const PKG_NAME: &str = env!("CARGO_PKG_NAME"); +const PKG_VERSION: &str = env!("CARGO_PKG_VERSION"); #[derive(Parser)] #[clap( name = PKG_NAME, about, long_about = None, + version = PKG_VERSION, propagate_version = false, dont_collapse_args_in_usage = true, args_conflicts_with_subcommands = true, @@ -15,14 +17,6 @@ const PKG_NAME: &str = env!("CARGO_PKG_NAME"); pub struct App { #[clap(subcommand)] pub subcommands: Option, - #[clap( - short, - long, - required = false, - action, - help = "Print version info and exit" - )] - pub version: bool, } impl App { diff --git a/cl-cli/src/lib.rs b/cl-cli/src/lib.rs index e6d680c..5370220 100644 --- a/cl-cli/src/lib.rs +++ b/cl-cli/src/lib.rs @@ -1,6 +1,6 @@ use anyhow::Result; use app::Subcommands; -use cl_core::{config::Config, resource::metadata::MAIN_PACKAGE_METADATA}; +use cl_core::config::Config; use subcommands::Subcommand; pub mod app; @@ -14,8 +14,3 @@ pub fn run_subcommands(subcommands: Subcommands, config: Config) -> Result<()> { Subcommands::Config(subcommand_config) => subcommand_config.run(config), } } - -pub fn print_metadata() -> Result<()> { - println!("{}", MAIN_PACKAGE_METADATA.to_string()); - Ok(()) -} diff --git a/cl-core/src/resource/metadata.rs b/cl-core/src/resource/metadata.rs deleted file mode 100644 index cabff31..0000000 --- a/cl-core/src/resource/metadata.rs +++ /dev/null @@ -1,85 +0,0 @@ -use cargo_metadata::{semver::Version as CargoVersion, MetadataCommand, Package as CargoPackage}; -use once_cell::sync::Lazy; - -static METADATA: Lazy = Lazy::new(Metadata::load); -pub static MAIN_PACKAGE_METADATA: Lazy = Lazy::new(|| METADATA.package.to_owned()); - -const PKG_NAME: &str = "cl"; - -pub struct Metadata { - package: Package, -} - -#[derive(Clone, Default)] -pub struct Package { - name: String, - version: Version, -} - -impl ToString for Package { - fn to_string(&self) -> String { - format!("{} {}", self.name, self.version.to_string()) - } -} - -impl From<&CargoPackage> for Package { - fn from(value: &CargoPackage) -> Self { - Package { - name: value.name.to_owned(), - version: value.version.to_owned().into(), - } - } -} - -#[derive(Clone, Default)] -pub struct Version { - patch: u64, - minor: u64, - major: u64, -} - -impl From for Version { - fn from(value: CargoVersion) -> Self { - Version { - patch: value.patch, - minor: value.minor, - major: value.major, - } - } -} - -impl ToString for Version { - fn to_string(&self) -> String { - format!("{}.{}.{}", self.major, self.minor, self.patch) - } -} - -impl Metadata { - pub fn load() -> Metadata { - Metadata { - package: Self::extract_package(), - } - } - - fn extract_package() -> Package { - let metadata = MetadataCommand::new() - .current_dir(env!("CARGO_MANIFEST_DIR")) - .exec() - .expect("Failed to retrieve metadata"); - - let packages = metadata - .workspace_packages() - .into_iter() - .filter(|package| PKG_NAME == package.name) - .map(Package::from) - .collect::>(); - - let package = packages - .first() - .map(|p| p.to_owned()) - .unwrap_or_else(Package::default) - .to_owned(); - - package - } -} diff --git a/cl-core/src/resource/mod.rs b/cl-core/src/resource/mod.rs index 59fd630..1266d2b 100644 --- a/cl-core/src/resource/mod.rs +++ b/cl-core/src/resource/mod.rs @@ -1,7 +1,6 @@ pub mod commands_file_handler; pub mod errors; pub mod fs_wrapper; -pub mod metadata; pub mod toml; /// Loads a `Commands` instance from a command file at the given path diff --git a/cl-gui/src/widgets/base_widget.rs b/cl-gui/src/widgets/base_widget.rs index 1ad87e7..82a5859 100644 --- a/cl-gui/src/widgets/base_widget.rs +++ b/cl-gui/src/widgets/base_widget.rs @@ -1,6 +1,5 @@ use super::StatusBarItem; use crate::entities::terminal::TerminalSize; -use cl_core::resource::metadata::MAIN_PACKAGE_METADATA; use tui::{ buffer::Buffer, layout::{Alignment, Constraint, Direction, Layout, Rect}, @@ -36,7 +35,7 @@ where let base_block = Block::default() .borders(Borders::ALL) .style(Style::default()) - .title(format!(" {} ", MAIN_PACKAGE_METADATA.to_string())) + .title(env!("CARGO_PKG_VERSION")) .title_alignment(Alignment::Right) .border_type(BorderType::Plain); diff --git a/src/main.rs b/src/main.rs index c5b86e8..1d8613b 100644 --- a/src/main.rs +++ b/src/main.rs @@ -1,5 +1,5 @@ use anyhow::{Context, Result}; -use cl_cli::{app::App, print_metadata, run_subcommands}; +use cl_cli::{app::App, run_subcommands}; use cl_core::{ config::Config, logger::{LoggerBuilder, LoggerType}, @@ -16,9 +16,7 @@ async fn main() -> Result<()> { let app = App::parse_app(); - if app.version { - print_metadata() - } else if let Some(subcommands) = app.subcommands { + if let Some(subcommands) = app.subcommands { logger .with_logger_type(LoggerType::Subcommand) .build()