From a7c90a277235fa825f9cfa137aa281da3c0e9acd Mon Sep 17 00:00:00 2001 From: nsfisis Date: Wed, 24 Jun 2026 01:20:46 +0900 Subject: refactor(crates): split metadata-minifier and spdx-licenses into own crates Move MetadataMinifier and SpdxLicenses out of shirabe-external-packages into dedicated shirabe-metadata-minifier and shirabe-spdx-licenses crates, updating all import sites accordingly. Co-Authored-By: Claude Opus 4.8 (1M context) --- .../metadata_minifier/metadata_minifier.rs | 38 ---------------------- .../src/composer/metadata_minifier/mod.rs | 3 -- .../shirabe-external-packages/src/composer/mod.rs | 4 --- .../src/composer/spdx_licenses/mod.rs | 3 -- .../src/composer/spdx_licenses/spdx_licenses.rs | 30 ----------------- crates/shirabe-metadata-minifier/Cargo.toml | 11 +++++++ crates/shirabe-metadata-minifier/src/lib.rs | 3 ++ .../src/metadata_minifier.rs | 38 ++++++++++++++++++++++ crates/shirabe-spdx-licenses/Cargo.toml | 10 ++++++ crates/shirabe-spdx-licenses/src/lib.rs | 3 ++ crates/shirabe-spdx-licenses/src/spdx_licenses.rs | 30 +++++++++++++++++ crates/shirabe/Cargo.toml | 2 ++ crates/shirabe/src/command/init_command.rs | 2 +- crates/shirabe/src/command/show_command.rs | 2 +- .../src/package/loader/validating_array_loader.rs | 2 +- .../shirabe/src/repository/composer_repository.rs | 2 +- crates/shirabe/src/util/config_validator.rs | 2 +- 17 files changed, 102 insertions(+), 83 deletions(-) delete mode 100644 crates/shirabe-external-packages/src/composer/metadata_minifier/metadata_minifier.rs delete mode 100644 crates/shirabe-external-packages/src/composer/metadata_minifier/mod.rs delete mode 100644 crates/shirabe-external-packages/src/composer/spdx_licenses/mod.rs delete mode 100644 crates/shirabe-external-packages/src/composer/spdx_licenses/spdx_licenses.rs create mode 100644 crates/shirabe-metadata-minifier/Cargo.toml create mode 100644 crates/shirabe-metadata-minifier/src/lib.rs create mode 100644 crates/shirabe-metadata-minifier/src/metadata_minifier.rs create mode 100644 crates/shirabe-spdx-licenses/Cargo.toml create mode 100644 crates/shirabe-spdx-licenses/src/lib.rs create mode 100644 crates/shirabe-spdx-licenses/src/spdx_licenses.rs (limited to 'crates') diff --git a/crates/shirabe-external-packages/src/composer/metadata_minifier/metadata_minifier.rs b/crates/shirabe-external-packages/src/composer/metadata_minifier/metadata_minifier.rs deleted file mode 100644 index 3f1a4fc..0000000 --- a/crates/shirabe-external-packages/src/composer/metadata_minifier/metadata_minifier.rs +++ /dev/null @@ -1,38 +0,0 @@ -//! ref: composer/vendor/composer/metadata-minifier/src/MetadataMinifier.php - -use indexmap::IndexMap; -use shirabe_php_shim::PhpMixed; - -#[derive(Debug)] -pub struct MetadataMinifier; - -impl MetadataMinifier { - pub fn expand(versions: Vec>) -> Vec> { - let mut expanded: Vec> = Vec::new(); - let mut expanded_version: Option> = None; - for version_data in versions { - if expanded_version.as_ref().is_none_or(|ev| ev.is_empty()) { - expanded.push(version_data.clone()); - expanded_version = Some(version_data); - continue; - } - - // add any changes from the previous version to the expanded one - let ev = expanded_version.as_mut().unwrap(); - for (key, val) in version_data { - if matches!(&val, PhpMixed::String(s) if s == "__unset") { - ev.shift_remove(&key); - } else { - ev.insert(key, val); - } - } - - expanded.push(ev.clone()); - } - - expanded - } - - // MetadataMinifier::minify() is not ported because it is not used in Composer itself. - // The function is mainly for package repositories. -} diff --git a/crates/shirabe-external-packages/src/composer/metadata_minifier/mod.rs b/crates/shirabe-external-packages/src/composer/metadata_minifier/mod.rs deleted file mode 100644 index d14cace..0000000 --- a/crates/shirabe-external-packages/src/composer/metadata_minifier/mod.rs +++ /dev/null @@ -1,3 +0,0 @@ -pub mod metadata_minifier; - -pub use metadata_minifier::*; diff --git a/crates/shirabe-external-packages/src/composer/mod.rs b/crates/shirabe-external-packages/src/composer/mod.rs index e5cccdb..0fcd787 100644 --- a/crates/shirabe-external-packages/src/composer/mod.rs +++ b/crates/shirabe-external-packages/src/composer/mod.rs @@ -1,15 +1,11 @@ pub mod ca_bundle; -pub mod metadata_minifier; pub mod pcre; pub mod semver; -pub mod spdx_licenses; pub mod util; pub mod xdebug_handler; pub use ca_bundle::*; -pub use metadata_minifier::*; pub use pcre::*; pub use semver::*; -pub use spdx_licenses::*; pub use util::*; pub use xdebug_handler::*; diff --git a/crates/shirabe-external-packages/src/composer/spdx_licenses/mod.rs b/crates/shirabe-external-packages/src/composer/spdx_licenses/mod.rs deleted file mode 100644 index 5a01abc..0000000 --- a/crates/shirabe-external-packages/src/composer/spdx_licenses/mod.rs +++ /dev/null @@ -1,3 +0,0 @@ -pub mod spdx_licenses; - -pub use spdx_licenses::*; diff --git a/crates/shirabe-external-packages/src/composer/spdx_licenses/spdx_licenses.rs b/crates/shirabe-external-packages/src/composer/spdx_licenses/spdx_licenses.rs deleted file mode 100644 index b955ccd..0000000 --- a/crates/shirabe-external-packages/src/composer/spdx_licenses/spdx_licenses.rs +++ /dev/null @@ -1,30 +0,0 @@ -//! ref: composer/vendor/composer/spdx-licenses/src/SpdxLicenses.php - -use shirabe_php_shim::PhpMixed; - -#[derive(Debug)] -pub struct SpdxLicenses; - -impl Default for SpdxLicenses { - fn default() -> Self { - Self::new() - } -} - -impl SpdxLicenses { - pub fn new() -> Self { - todo!() - } - - pub fn validate(&self, _license: &str) -> bool { - todo!() - } - - pub fn get_license_by_identifier(&self, _identifier: &str) -> Option { - todo!() - } - - pub fn get_licenses(&self) -> PhpMixed { - todo!() - } -} diff --git a/crates/shirabe-metadata-minifier/Cargo.toml b/crates/shirabe-metadata-minifier/Cargo.toml new file mode 100644 index 0000000..6f11402 --- /dev/null +++ b/crates/shirabe-metadata-minifier/Cargo.toml @@ -0,0 +1,11 @@ +[package] +name = "shirabe-metadata-minifier" +version.workspace = true +edition.workspace = true + +[dependencies] +shirabe-php-shim.workspace = true +indexmap.workspace = true + +[lints] +workspace = true diff --git a/crates/shirabe-metadata-minifier/src/lib.rs b/crates/shirabe-metadata-minifier/src/lib.rs new file mode 100644 index 0000000..342786f --- /dev/null +++ b/crates/shirabe-metadata-minifier/src/lib.rs @@ -0,0 +1,3 @@ +mod metadata_minifier; + +pub use metadata_minifier::*; diff --git a/crates/shirabe-metadata-minifier/src/metadata_minifier.rs b/crates/shirabe-metadata-minifier/src/metadata_minifier.rs new file mode 100644 index 0000000..3f1a4fc --- /dev/null +++ b/crates/shirabe-metadata-minifier/src/metadata_minifier.rs @@ -0,0 +1,38 @@ +//! ref: composer/vendor/composer/metadata-minifier/src/MetadataMinifier.php + +use indexmap::IndexMap; +use shirabe_php_shim::PhpMixed; + +#[derive(Debug)] +pub struct MetadataMinifier; + +impl MetadataMinifier { + pub fn expand(versions: Vec>) -> Vec> { + let mut expanded: Vec> = Vec::new(); + let mut expanded_version: Option> = None; + for version_data in versions { + if expanded_version.as_ref().is_none_or(|ev| ev.is_empty()) { + expanded.push(version_data.clone()); + expanded_version = Some(version_data); + continue; + } + + // add any changes from the previous version to the expanded one + let ev = expanded_version.as_mut().unwrap(); + for (key, val) in version_data { + if matches!(&val, PhpMixed::String(s) if s == "__unset") { + ev.shift_remove(&key); + } else { + ev.insert(key, val); + } + } + + expanded.push(ev.clone()); + } + + expanded + } + + // MetadataMinifier::minify() is not ported because it is not used in Composer itself. + // The function is mainly for package repositories. +} diff --git a/crates/shirabe-spdx-licenses/Cargo.toml b/crates/shirabe-spdx-licenses/Cargo.toml new file mode 100644 index 0000000..a1bd9bb --- /dev/null +++ b/crates/shirabe-spdx-licenses/Cargo.toml @@ -0,0 +1,10 @@ +[package] +name = "shirabe-spdx-licenses" +version.workspace = true +edition.workspace = true + +[dependencies] +shirabe-php-shim.workspace = true + +[lints] +workspace = true diff --git a/crates/shirabe-spdx-licenses/src/lib.rs b/crates/shirabe-spdx-licenses/src/lib.rs new file mode 100644 index 0000000..e0473bf --- /dev/null +++ b/crates/shirabe-spdx-licenses/src/lib.rs @@ -0,0 +1,3 @@ +mod spdx_licenses; + +pub use spdx_licenses::*; diff --git a/crates/shirabe-spdx-licenses/src/spdx_licenses.rs b/crates/shirabe-spdx-licenses/src/spdx_licenses.rs new file mode 100644 index 0000000..b955ccd --- /dev/null +++ b/crates/shirabe-spdx-licenses/src/spdx_licenses.rs @@ -0,0 +1,30 @@ +//! ref: composer/vendor/composer/spdx-licenses/src/SpdxLicenses.php + +use shirabe_php_shim::PhpMixed; + +#[derive(Debug)] +pub struct SpdxLicenses; + +impl Default for SpdxLicenses { + fn default() -> Self { + Self::new() + } +} + +impl SpdxLicenses { + pub fn new() -> Self { + todo!() + } + + pub fn validate(&self, _license: &str) -> bool { + todo!() + } + + pub fn get_license_by_identifier(&self, _identifier: &str) -> Option { + todo!() + } + + pub fn get_licenses(&self) -> PhpMixed { + todo!() + } +} diff --git a/crates/shirabe/Cargo.toml b/crates/shirabe/Cargo.toml index 1176165..eb34838 100644 --- a/crates/shirabe/Cargo.toml +++ b/crates/shirabe/Cargo.toml @@ -6,8 +6,10 @@ edition.workspace = true [dependencies] shirabe-class-map-generator.workspace = true shirabe-external-packages.workspace = true +shirabe-metadata-minifier.workspace = true shirabe-php-shim.workspace = true shirabe-semver.workspace = true +shirabe-spdx-licenses.workspace = true anyhow.workspace = true async-trait.workspace = true base64.workspace = true diff --git a/crates/shirabe/src/command/init_command.rs b/crates/shirabe/src/command/init_command.rs index 68b4b69..71be193 100644 --- a/crates/shirabe/src/command/init_command.rs +++ b/crates/shirabe/src/command/init_command.rs @@ -4,7 +4,6 @@ use crate::io::io_interface; use anyhow::Result; use indexmap::IndexMap; use shirabe_external_packages::composer::pcre::{CaptureKey, Preg}; -use shirabe_external_packages::composer::spdx_licenses::SpdxLicenses; use shirabe_external_packages::symfony::console::command::command::Command; use shirabe_external_packages::symfony::console::helper::FormatBlockMessages; use shirabe_external_packages::symfony::console::input::ArrayInput; @@ -17,6 +16,7 @@ use shirabe_php_shim::{ is_dir, is_string, preg_quote, realpath, server_get, sprintf, str_replace, strpos, strtolower, trim, ucwords, }; +use shirabe_spdx_licenses::SpdxLicenses; use std::cell::RefCell; use std::rc::Rc; diff --git a/crates/shirabe/src/command/show_command.rs b/crates/shirabe/src/command/show_command.rs index 27ed8f1..6dff0ff 100644 --- a/crates/shirabe/src/command/show_command.rs +++ b/crates/shirabe/src/command/show_command.rs @@ -4,7 +4,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::composer::spdx_licenses::SpdxLicenses; 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; @@ -15,6 +14,7 @@ use shirabe_php_shim::{ array_search, date, date_format_to_strftime, extension_loaded, in_array, realpath, strtolower, version_compare, }; +use shirabe_spdx_licenses::SpdxLicenses; use std::cell::RefCell; use std::rc::Rc; diff --git a/crates/shirabe/src/package/loader/validating_array_loader.rs b/crates/shirabe/src/package/loader/validating_array_loader.rs index 1ea51c1..57055eb 100644 --- a/crates/shirabe/src/package/loader/validating_array_loader.rs +++ b/crates/shirabe/src/package/loader/validating_array_loader.rs @@ -4,7 +4,6 @@ use chrono::TimeZone; use indexmap::IndexMap; use shirabe_external_packages::composer::pcre::Preg; -use shirabe_external_packages::composer::spdx_licenses::SpdxLicenses; use shirabe_php_shim::{ E_USER_DEPRECATED, PHP_EOL, PhpMixed, array_intersect_key, array_values, filter_var_email, get_debug_type, is_array, is_bool, is_int, is_numeric, is_scalar, is_string, json_encode, @@ -15,6 +14,7 @@ use shirabe_semver::constraint::AnyConstraint; use shirabe_semver::constraint::MatchNoneConstraint; use shirabe_semver::constraint::SimpleConstraint; use shirabe_semver::intervals::Intervals; +use shirabe_spdx_licenses::SpdxLicenses; use crate::package::loader::InvalidPackageException; use crate::package::loader::LoaderInterface; diff --git a/crates/shirabe/src/repository/composer_repository.rs b/crates/shirabe/src/repository/composer_repository.rs index 365d1c3..9ea4432 100644 --- a/crates/shirabe/src/repository/composer_repository.rs +++ b/crates/shirabe/src/repository/composer_repository.rs @@ -1,8 +1,8 @@ //! ref: composer/src/Composer/Repository/ComposerRepository.php use indexmap::IndexMap; -use shirabe_external_packages::composer::metadata_minifier::MetadataMinifier; use shirabe_external_packages::composer::pcre::{CaptureKey, Preg}; +use shirabe_metadata_minifier::MetadataMinifier; use shirabe_php_shim::{ InvalidArgumentException, LogicException, PHP_EOL, PhpMixed, RuntimeException, UnexpectedValueException, extension_loaded, hash, http_build_query, in_array, json_decode, diff --git a/crates/shirabe/src/util/config_validator.rs b/crates/shirabe/src/util/config_validator.rs index 033e6b3..689b107 100644 --- a/crates/shirabe/src/util/config_validator.rs +++ b/crates/shirabe/src/util/config_validator.rs @@ -8,10 +8,10 @@ use crate::package::loader::InvalidPackageException; use crate::package::loader::ValidatingArrayLoader; use indexmap::IndexMap; use shirabe_external_packages::composer::pcre::Preg; -use shirabe_external_packages::composer::spdx_licenses::SpdxLicenses; use shirabe_external_packages::seld::json_lint::DuplicateKeyException; use shirabe_external_packages::seld::json_lint::JsonParser; use shirabe_php_shim::PhpMixed; +use shirabe_spdx_licenses::SpdxLicenses; #[derive(Debug)] pub struct ConfigValidator { -- cgit v1.3.1