From da068098e7e1d5ef1d068a834a78545217f72394 Mon Sep 17 00:00:00 2001 From: nsfisis Date: Wed, 24 Jun 2026 01:38:43 +0900 Subject: refactor(semver): re-export shirabe-semver at crate root, drop composer::semver stubs Flatten shirabe-semver's modules into glob re-exports at the crate root and route all consumers through the short paths. Remove the duplicate composer::semver stubs from shirabe-external-packages in favor of the shirabe-semver types. Co-Authored-By: Claude Opus 4.8 (1M context) --- crates/shirabe/src/command/config_command.rs | 2 +- crates/shirabe/src/command/show_command.rs | 29 ++++++++++++++++------------ crates/shirabe/src/command/update_command.rs | 2 +- 3 files changed, 19 insertions(+), 14 deletions(-) (limited to 'crates/shirabe/src/command') diff --git a/crates/shirabe/src/command/config_command.rs b/crates/shirabe/src/command/config_command.rs index 7dcd6bf..aff950e 100644 --- a/crates/shirabe/src/command/config_command.rs +++ b/crates/shirabe/src/command/config_command.rs @@ -38,7 +38,7 @@ use crate::package::base_package::{self, BasePackage}; use crate::util::Filesystem; use crate::util::Platform; use crate::util::Silencer; -use shirabe_semver::version_parser::VersionParser; +use shirabe_semver::VersionParser; #[derive(Debug)] pub struct ConfigCommand { diff --git a/crates/shirabe/src/command/show_command.rs b/crates/shirabe/src/command/show_command.rs index 6dff0ff..ff348c5 100644 --- a/crates/shirabe/src/command/show_command.rs +++ b/crates/shirabe/src/command/show_command.rs @@ -3,7 +3,6 @@ use anyhow::Result; use indexmap::IndexMap; use shirabe_external_packages::composer::pcre::{CaptureKey, Preg}; -use shirabe_external_packages::composer::semver::Semver; use shirabe_external_packages::symfony::console::command::command::Command; use shirabe_external_packages::symfony::console::formatter::OutputFormatter; use shirabe_external_packages::symfony::console::formatter::OutputFormatterStyle; @@ -14,6 +13,7 @@ use shirabe_php_shim::{ array_search, date, date_format_to_strftime, extension_loaded, in_array, realpath, strtolower, version_compare, }; +use shirabe_semver::Semver; use shirabe_spdx_licenses::SpdxLicenses; use std::cell::RefCell; use std::rc::Rc; @@ -1062,7 +1062,7 @@ impl Command for ShowCommand { latest_version_str.trim_start_matches('v').to_string(); } let update_status = - Self::get_update_status(latest.clone(), package.clone()); + Self::get_update_status(latest.clone(), package.clone())?; latest_length = latest_length.max(latest_version_str.len()); package_view_data .insert("latest".to_string(), PhpMixed::String(latest_version_str)); @@ -1544,9 +1544,14 @@ impl ShowCommand { &self, latest_package: PackageInterfaceHandle, package: PackageInterfaceHandle, - ) -> String { - Self::update_status_to_version_style(&Self::get_update_status(latest_package, package)) - .to_string() + ) -> anyhow::Result { + Ok( + Self::update_status_to_version_style(&Self::get_update_status( + latest_package, + package, + )?) + .to_string(), + ) } /// finds a package by name and version if provided @@ -1691,7 +1696,7 @@ impl ShowCommand { )); } let latest: PackageInterfaceHandle = if let Some(latest) = latest_package { - let style = self.get_version_style(latest.clone(), package.clone().into()); + let style = self.get_version_style(latest.clone(), package.clone().into())?; let released_time = match latest.get_release_date() { None => String::new(), Some(rd) => { @@ -1830,7 +1835,7 @@ impl ShowCommand { installed_repo: &mut dyn RepositoryInterface, ) -> anyhow::Result<()> { let mut versions_keys: Vec = versions.keys().cloned().collect(); - versions_keys = Semver::rsort(versions_keys); + versions_keys = Semver::rsort(versions_keys)?; // highlight installed version let installed_packages = installed_repo.find_packages(&package.get_name(), None)?; @@ -2579,11 +2584,11 @@ impl ShowCommand { fn get_update_status( latest_package: PackageInterfaceHandle, package: PackageInterfaceHandle, - ) -> String { + ) -> anyhow::Result { if latest_package.get_full_pretty_version(true, crate::package::DisplayMode::SourceRefIfDev) == package.get_full_pretty_version(true, crate::package::DisplayMode::SourceRefIfDev) { - return "up-to-date".to_string(); + return Ok("up-to-date".to_string()); } let mut constraint = package.get_version().to_string(); @@ -2591,14 +2596,14 @@ impl ShowCommand { constraint = format!("^{}", constraint); } if !latest_package.get_version().is_empty() - && Semver::satisfies(&latest_package.get_version(), &constraint) + && Semver::satisfies(latest_package.get_version(), constraint)? { // it needs an immediate semver-compliant upgrade - return "semver-safe-update".to_string(); + return Ok("semver-safe-update".to_string()); } // it needs an upgrade but has potential BC breaks so is not urgent - "update-possible".to_string() + Ok("update-possible".to_string()) } fn write_tree_line(&mut self, line: &str) { diff --git a/crates/shirabe/src/command/update_command.rs b/crates/shirabe/src/command/update_command.rs index 42622bd..4d8c90a 100644 --- a/crates/shirabe/src/command/update_command.rs +++ b/crates/shirabe/src/command/update_command.rs @@ -13,8 +13,8 @@ use shirabe_php_shim::{ InvalidArgumentException, PhpMixed, RuntimeException, array_filter, array_intersect, array_keys, array_merge_map, array_search_in_vec, count, empty, in_array, sprintf, strtolower, }; +use shirabe_semver::Intervals; use shirabe_semver::constraint::MultiConstraint; -use shirabe_semver::intervals::Intervals; use std::cell::RefCell; use std::rc::Rc; -- cgit v1.3.1