aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/shirabe/src/command
diff options
context:
space:
mode:
Diffstat (limited to 'crates/shirabe/src/command')
-rw-r--r--crates/shirabe/src/command/archive_command.rs3
-rw-r--r--crates/shirabe/src/command/create_project_command.rs5
-rw-r--r--crates/shirabe/src/command/package_discovery_trait.rs13
-rw-r--r--crates/shirabe/src/command/show_command.rs52
-rw-r--r--crates/shirabe/src/command/update_command.rs3
5 files changed, 36 insertions, 40 deletions
diff --git a/crates/shirabe/src/command/archive_command.rs b/crates/shirabe/src/command/archive_command.rs
index cd2d1648..25d32b2b 100644
--- a/crates/shirabe/src/command/archive_command.rs
+++ b/crates/shirabe/src/command/archive_command.rs
@@ -12,6 +12,7 @@ use crate::io::IOInterfaceImmutable;
use crate::package::archiver::ArchiveManagerInterface;
use crate::package::version::VersionParser;
use crate::package::version::VersionSelector;
+use crate::package::version::version_selector::ShowWarnings;
use crate::plugin::CommandEvent;
use crate::plugin::PluginEvents;
use crate::repository::CompositeRepository;
@@ -424,7 +425,7 @@ impl ArchiveCommand {
None,
0,
None,
- shirabe_php_shim::PhpMixed::Bool(true),
+ ShowWarnings::Always,
)?;
let p = best.unwrap_or_else(|| packages.into_iter().next().unwrap());
diff --git a/crates/shirabe/src/command/create_project_command.rs b/crates/shirabe/src/command/create_project_command.rs
index 9a2c4755..8ea4f07f 100644
--- a/crates/shirabe/src/command/create_project_command.rs
+++ b/crates/shirabe/src/command/create_project_command.rs
@@ -21,6 +21,7 @@ use crate::io::IOInterfaceImmutable;
use crate::json::JsonFile;
use crate::package::version::VersionParser;
use crate::package::version::VersionSelector;
+use crate::package::version::version_selector::ShowWarnings;
use crate::package::{STABILITIES, SUPPORTED_LINK_TYPES};
use crate::plugin::PluginBlockedException;
use crate::repository::CompositeRepository;
@@ -895,7 +896,7 @@ impl CreateProjectCommand {
Some(platform_requirement_filter.clone()),
0,
Some(io.clone()),
- PhpMixed::Bool(true),
+ ShowWarnings::Always,
)?;
if package.is_none() {
@@ -921,7 +922,7 @@ impl CreateProjectCommand {
Some(PlatformRequirementFilterFactory::ignore_all()),
0,
None,
- PhpMixed::Bool(true),
+ ShowWarnings::Always,
)?
.is_some()
{
diff --git a/crates/shirabe/src/command/package_discovery_trait.rs b/crates/shirabe/src/command/package_discovery_trait.rs
index f8f7cede..830f1996 100644
--- a/crates/shirabe/src/command/package_discovery_trait.rs
+++ b/crates/shirabe/src/command/package_discovery_trait.rs
@@ -10,6 +10,7 @@ use crate::io::io_interface;
use crate::package::PackageInterfaceHandle;
use crate::package::version::VersionParser;
use crate::package::version::VersionSelector;
+use crate::package::version::version_selector::ShowWarnings;
use crate::repository::CompositeRepository;
use crate::repository::PlatformRepository;
use crate::repository::PlatformRepositoryHandle;
@@ -486,7 +487,7 @@ pub trait PackageDiscoveryTrait: BaseCommand {
Some(platform_requirement_filter.clone()),
0,
None,
- shirabe_php_shim::PhpMixed::Null,
+ ShowWarnings::Always,
)?;
if package.is_none() {
@@ -544,7 +545,7 @@ pub trait PackageDiscoveryTrait: BaseCommand {
Some(PlatformRequirementFilterFactory::ignore_all()),
0,
None,
- shirabe_php_shim::PhpMixed::Null,
+ ShowWarnings::Always,
)?;
if let Some(candidate) = candidate {
return Err(InvalidArgumentException {
@@ -569,7 +570,7 @@ pub trait PackageDiscoveryTrait: BaseCommand {
Some(platform_requirement_filter.clone()),
RepositorySet::ALLOW_UNACCEPTABLE_STABILITIES,
None,
- shirabe_php_shim::PhpMixed::Null,
+ ShowWarnings::Always,
)?;
if let Some(package) = package_at_unacceptable {
// we must first verify if a valid package would be found in a lower priority repository
@@ -580,7 +581,7 @@ pub trait PackageDiscoveryTrait: BaseCommand {
Some(PlatformRequirementFilterFactory::ignore_nothing()),
RepositorySet::ALLOW_SHADOWED_REPOSITORIES,
None,
- shirabe_php_shim::PhpMixed::Null,
+ ShowWarnings::Always,
)?;
if let Some(all_repos_package) = all_repos_package {
return Err(InvalidArgumentException {
@@ -620,7 +621,7 @@ pub trait PackageDiscoveryTrait: BaseCommand {
Some(PlatformRequirementFilterFactory::ignore_all()),
RepositorySet::ALLOW_UNACCEPTABLE_STABILITIES,
None,
- shirabe_php_shim::PhpMixed::Null,
+ ShowWarnings::Always,
)?;
if let Some(candidate) = candidate {
let mut additional = String::new();
@@ -631,7 +632,7 @@ pub trait PackageDiscoveryTrait: BaseCommand {
Some(PlatformRequirementFilterFactory::ignore_all()),
0,
None,
- shirabe_php_shim::PhpMixed::Null,
+ ShowWarnings::Always,
)?;
if no_match.is_none() {
additional = format!(
diff --git a/crates/shirabe/src/command/show_command.rs b/crates/shirabe/src/command/show_command.rs
index 8d1f67ff..4ba20575 100644
--- a/crates/shirabe/src/command/show_command.rs
+++ b/crates/shirabe/src/command/show_command.rs
@@ -16,6 +16,7 @@ use crate::package::PackageInterfaceHandle;
use crate::package::base_package;
use crate::package::version::VersionParser;
use crate::package::version::VersionSelector;
+use crate::package::version::version_selector::ShowWarnings;
use crate::plugin::CommandEvent;
use crate::plugin::PluginEvents;
use crate::repository::ComposerRepository;
@@ -540,18 +541,14 @@ impl Command for ShowCommand {
.iter()
.map(crate::package::PackageInterfaceHandle::dup)
.collect();
- installed_repo = RepositoryInterfaceHandle::new(InstalledRepository::new(vec![
- root_repo.clone(),
- RepositoryInterfaceHandle::new(InstalledArrayRepository::new_with_packages(
- cloned,
- )?),
- ]));
- repos = RepositoryInterfaceHandle::new(InstalledRepository::new(vec![
+ let new_repo = RepositoryInterfaceHandle::new(InstalledRepository::new(vec![
root_repo,
RepositoryInterfaceHandle::new(InstalledArrayRepository::new_with_packages(
- Vec::new(),
+ cloned,
)?),
]));
+ installed_repo = new_repo.clone();
+ repos = new_repo;
} else {
let repository_manager = composer_local.get_repository_manager().clone();
let repository_manager = repository_manager.borrow();
@@ -619,7 +616,7 @@ impl Command for ShowCommand {
&& !pf.contains('*')
{
let (matched_package, vers) = self.get_package(
- &*installed_repo.borrow(),
+ &installed_repo,
&repos,
pf,
input.borrow().get_argument("version")?,
@@ -686,11 +683,8 @@ impl Command for ShowCommand {
let mut exit_code: i64 = 0;
if input.borrow().get_option("tree")?.as_bool() == Some(true) {
- let array_tree = self.generate_package_tree(
- package.clone().into(),
- &*installed_repo.borrow(),
- &repos,
- );
+ let array_tree =
+ self.generate_package_tree(package.clone().into(), &installed_repo, &repos);
if format == "json" {
let mut wrapper: IndexMap<String, PhpMixed> = IndexMap::new();
@@ -812,7 +806,7 @@ impl Command for ShowCommand {
) {
array_tree.push(self.generate_package_tree(
package.clone(),
- &*installed_repo.borrow(),
+ &installed_repo,
&repos,
));
}
@@ -1656,7 +1650,7 @@ impl ShowCommand {
/// finds a package by name and version if provided
pub(crate) fn get_package(
&self,
- installed_repo: &dyn RepositoryInterface,
+ installed_repo: &RepositoryInterfaceHandle,
repos: &RepositoryInterfaceHandle,
name: &str,
version: PhpMixed,
@@ -2462,7 +2456,7 @@ impl ShowCommand {
pub(crate) fn generate_package_tree(
&self,
package: PackageInterfaceHandle,
- installed_repo: &dyn RepositoryInterface,
+ installed_repo: &RepositoryInterfaceHandle,
remote_repos: &RepositoryInterfaceHandle,
) -> IndexMap<String, PhpMixed> {
let requires = {
@@ -2613,7 +2607,7 @@ impl ShowCommand {
&self,
name: &str,
link: &Link,
- installed_repo: &dyn RepositoryInterface,
+ installed_repo: &RepositoryInterfaceHandle,
remote_repos: &RepositoryInterfaceHandle,
packages_in_tree: &[PhpMixed],
) -> anyhow::Result<Vec<IndexMap<String, PhpMixed>>> {
@@ -2817,12 +2811,12 @@ impl ShowCommand {
}
}
- let show_warnings_box: Box<dyn Fn(PackageInterfaceHandle) -> bool> =
- if self.get_io().is_verbose() {
- Box::new(|_p: PackageInterfaceHandle| -> bool { true })
- } else {
- let package_version = package.get_version();
- Box::new(move |candidate: PackageInterfaceHandle| -> bool {
+ let show_warnings = if self.get_io().is_verbose() {
+ ShowWarnings::Always
+ } else {
+ let package_version = package.get_version();
+ ShowWarnings::Predicate(Box::new(
+ move |candidate: &PackageInterfaceHandle| -> bool {
if candidate.get_version().starts_with("dev-")
|| package_version.starts_with("dev-")
{
@@ -2830,11 +2824,9 @@ impl ShowCommand {
}
version_compare(&candidate.get_version(), &package_version, "<=")
- })
- };
- // TODO(phase-c): PHP passes $showWarnings (true or a closure) as the last argument, but the
- // closure form requires modeling a callable inside PhpMixed; hardcoding true until then.
- let _ = show_warnings_box;
+ },
+ ))
+ };
let mut candidate = version_selector.find_best_candidate(
&name,
target_version.as_deref(),
@@ -2842,7 +2834,7 @@ impl ShowCommand {
Some(platform_req_filter),
0,
Some(self.get_io().clone()),
- PhpMixed::Bool(true),
+ show_warnings,
)?;
while let Some(ref c) = candidate {
if let Some(alias) = c.as_alias() {
diff --git a/crates/shirabe/src/command/update_command.rs b/crates/shirabe/src/command/update_command.rs
index 0d212350..b47c51d0 100644
--- a/crates/shirabe/src/command/update_command.rs
+++ b/crates/shirabe/src/command/update_command.rs
@@ -16,6 +16,7 @@ use crate::package::base_package;
use crate::package::loader::RootPackageLoader;
use crate::package::version::VersionParser;
use crate::package::version::VersionSelector;
+use crate::package::version::version_selector::ShowWarnings;
use crate::plugin::CommandEvent;
use crate::plugin::PluginEvents;
use crate::repository::CanonicalPackagesTrait;
@@ -669,7 +670,7 @@ impl UpdateCommand {
None,
0,
None,
- PhpMixed::Bool(true),
+ ShowWarnings::Always,
)?;
let _ = &platform_req_filter;
if let Some(latest) = latest_version