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.rs2
-rw-r--r--crates/shirabe/src/command/audit_command.rs8
-rw-r--r--crates/shirabe/src/command/base_dependency_command.rs12
-rw-r--r--crates/shirabe/src/command/bump_command.rs2
-rw-r--r--crates/shirabe/src/command/check_platform_reqs_command.rs8
-rw-r--r--crates/shirabe/src/command/create_project_command.rs4
-rw-r--r--crates/shirabe/src/command/diagnose_command.rs25
-rw-r--r--crates/shirabe/src/command/fund_command.rs8
-rw-r--r--crates/shirabe/src/command/home_command.rs2
-rw-r--r--crates/shirabe/src/command/licenses_command.rs6
-rw-r--r--crates/shirabe/src/command/package_discovery_trait.rs33
-rw-r--r--crates/shirabe/src/command/reinstall_command.rs6
-rw-r--r--crates/shirabe/src/command/remove_command.rs12
-rw-r--r--crates/shirabe/src/command/require_command.rs6
-rw-r--r--crates/shirabe/src/command/search_command.rs4
-rw-r--r--crates/shirabe/src/command/show_command.rs38
-rw-r--r--crates/shirabe/src/command/status_command.rs2
-rw-r--r--crates/shirabe/src/command/suggests_command.rs6
-rw-r--r--crates/shirabe/src/command/update_command.rs18
-rw-r--r--crates/shirabe/src/command/validate_command.rs2
20 files changed, 101 insertions, 103 deletions
diff --git a/crates/shirabe/src/command/archive_command.rs b/crates/shirabe/src/command/archive_command.rs
index 18b69c3..5e60ce1 100644
--- a/crates/shirabe/src/command/archive_command.rs
+++ b/crates/shirabe/src/command/archive_command.rs
@@ -305,7 +305,7 @@ impl ArchiveCommand {
Some(v) => Some(parser.parse_constraints(v)?.clone()),
None => None,
};
- let packages = repo_set.find_packages(&package_name.to_lowercase(), constraint, 0);
+ let packages = repo_set.find_packages(&package_name.to_lowercase(), constraint, 0)?;
let package = if packages.len() > 1 {
let mut version_selector = VersionSelector::new(repo_set, None)?;
diff --git a/crates/shirabe/src/command/audit_command.rs b/crates/shirabe/src/command/audit_command.rs
index 786843e..a28c344 100644
--- a/crates/shirabe/src/command/audit_command.rs
+++ b/crates/shirabe/src/command/audit_command.rs
@@ -156,11 +156,9 @@ impl AuditCommand {
code: 0,
}.into());
}
- return Ok(CanonicalPackagesTrait::get_packages(
- &*locker
- .get_locked_repository(!input.get_option("no-dev").as_bool().unwrap_or(false))?
- .borrow(),
- ));
+ let locked_repo = locker
+ .get_locked_repository(!input.get_option("no-dev").as_bool().unwrap_or(false))?;
+ return locked_repo.borrow_mut().get_canonical_packages();
}
let _root_pkg = composer.get_package();
diff --git a/crates/shirabe/src/command/base_dependency_command.rs b/crates/shirabe/src/command/base_dependency_command.rs
index 177b0e6..5dfb13f 100644
--- a/crates/shirabe/src/command/base_dependency_command.rs
+++ b/crates/shirabe/src/command/base_dependency_command.rs
@@ -88,7 +88,7 @@ pub trait BaseDependencyCommand: BaseCommand {
let local_repo = repository_manager.get_local_repository();
let root_pkg = composer.get_package();
- if local_repo.get_packages().len() == 0
+ if local_repo.get_packages()?.len() == 0
&& (root_pkg.get_requires().len() > 0 || root_pkg.get_dev_requires().len() > 0)
{
output.writeln(
@@ -132,7 +132,7 @@ pub trait BaseDependencyCommand: BaseCommand {
"*".to_string()
};
- let packages = installed_repo.find_packages_with_replacers_and_providers(&needle, None);
+ let packages = installed_repo.find_packages_with_replacers_and_providers(&needle, None)?;
if packages.is_empty() {
return Err(anyhow::anyhow!(InvalidArgumentException {
message: format!("Could not find package \"{}\" in your project", needle),
@@ -143,9 +143,9 @@ pub trait BaseDependencyCommand: BaseCommand {
let matched_package = installed_repo.find_package(
&needle,
FindPackageConstraint::String(text_constraint.clone()),
- );
+ )?;
if matched_package.is_none() {
- let default_repos = CompositeRepository::new(
+ let mut default_repos = CompositeRepository::new(
RepositoryFactory::default_repos(
Some(self.get_io()),
Some(composer.get_config()),
@@ -158,7 +158,7 @@ pub trait BaseDependencyCommand: BaseCommand {
if let Some(r#match) = default_repos.find_package(
&needle,
FindPackageConstraint::String(text_constraint.clone()),
- ) {
+ )? {
installed_repo.add_repository(
crate::repository::RepositoryInterfaceHandle::new(
InstalledArrayRepository::new_with_packages(vec![
@@ -259,7 +259,7 @@ pub trait BaseDependencyCommand: BaseCommand {
inverted,
recursive,
None,
- );
+ )?;
if results.is_empty() {
let extra = if has_constraint {
format!(
diff --git a/crates/shirabe/src/command/bump_command.rs b/crates/shirabe/src/command/bump_command.rs
index b91a32a..f322ec0 100644
--- a/crates/shirabe/src/command/bump_command.rs
+++ b/crates/shirabe/src/command/bump_command.rs
@@ -241,7 +241,7 @@ impl BumpCommand {
let package_opt = repo.find_package(
pkg_name,
crate::repository::FindPackageConstraint::String("*".to_string()),
- );
+ )?;
let mut package = match package_opt {
None => continue,
Some(p) => p,
diff --git a/crates/shirabe/src/command/check_platform_reqs_command.rs b/crates/shirabe/src/command/check_platform_reqs_command.rs
index edacf0b..14b3be2 100644
--- a/crates/shirabe/src/command/check_platform_reqs_command.rs
+++ b/crates/shirabe/src/command/check_platform_reqs_command.rs
@@ -81,7 +81,7 @@ impl CheckPlatformReqsCommand {
let repository_manager = composer.get_repository_manager().clone();
let repository_manager = repository_manager.borrow();
let local_repo = repository_manager.get_local_repository();
- if local_repo.get_packages().is_empty() {
+ if local_repo.get_packages()?.is_empty() {
io.write_error(&format!(
"<warning>No vendor dir present, checking {}platform requirements from the lock file</warning>",
if no_dev { "non-dev " } else { "" }
@@ -115,12 +115,12 @@ impl CheckPlatformReqsCommand {
let root_pkg_repo = RootPackageRepository::new(
crate::package::RootPackageInterfaceHandle::dup(composer.get_package()),
);
- let installed_repo = InstalledRepository::new(vec![
+ let mut installed_repo = InstalledRepository::new(vec![
installed_repo_base,
crate::repository::RepositoryInterfaceHandle::new(root_pkg_repo),
]);
- for package in installed_repo.get_packages() {
+ for package in installed_repo.get_packages()? {
if remove_packages.contains(&package.get_name().to_string()) {
continue;
}
@@ -149,7 +149,7 @@ impl CheckPlatformReqsCommand {
'requirements: for (require, links) in &requires_sorted {
if PlatformRepository::is_platform_package(require) {
let candidates = installed_repo_with_platform
- .find_packages_with_replacers_and_providers(require, None);
+ .find_packages_with_replacers_and_providers(require, None)?;
if !candidates.is_empty() {
let mut req_results: Vec<CheckResult> = vec![];
'candidates: for candidate in &candidates {
diff --git a/crates/shirabe/src/command/create_project_command.rs b/crates/shirabe/src/command/create_project_command.rs
index 189ccfc..8485069 100644
--- a/crates/shirabe/src/command/create_project_command.rs
+++ b/crates/shirabe/src/command/create_project_command.rs
@@ -788,7 +788,7 @@ impl CreateProjectCommand {
}
let platform_overrides = config.borrow_mut().get("platform");
- let platform_repo = PlatformRepository::new(
+ let mut platform_repo = PlatformRepository::new(
vec![],
match platform_overrides {
PhpMixed::Array(m) => m
@@ -805,7 +805,7 @@ impl CreateProjectCommand {
)?;
// find the latest version if there are multiple
- let mut version_selector = VersionSelector::new(repository_set, Some(&platform_repo))?;
+ let mut version_selector = VersionSelector::new(repository_set, Some(&mut platform_repo))?;
// TODO(phase-b): platform_requirement_filter is &dyn here but VersionSelector expects
// Option<Box<dyn ...>>; pass None as placeholder.
let _ = platform_requirement_filter;
diff --git a/crates/shirabe/src/command/diagnose_command.rs b/crates/shirabe/src/command/diagnose_command.rs
index bcedf30..d9ab5e2 100644
--- a/crates/shirabe/src/command/diagnose_command.rs
+++ b/crates/shirabe/src/command/diagnose_command.rs
@@ -162,12 +162,13 @@ impl DiagnoseCommand {
.into_iter()
.map(|(k, v)| (k, *v))
.collect();
- let platform_repo = PlatformRepository::new(vec![], platform_overrides_unboxed).unwrap();
+ let mut platform_repo =
+ PlatformRepository::new(vec![], platform_overrides_unboxed).unwrap();
let php_pkg = <PlatformRepository as crate::repository::RepositoryInterface>::find_package(
- &platform_repo,
+ &mut platform_repo,
"php",
crate::repository::FindPackageConstraint::String("*".to_string()),
- )
+ )?
.unwrap();
let mut php_version = php_pkg.get_pretty_version().to_string();
if let Some(cp) = php_pkg.as_complete() {
@@ -933,16 +934,14 @@ impl DiagnoseCommand {
"url".to_string(),
PhpMixed::String("https://packagist.org".to_string()),
);
- // TODO(phase-b): ComposerRepository does not implement RepositoryInterface yet
- let _composer_repo = ComposerRepository::new(
- repo_config,
- std::rc::Rc::new(std::cell::RefCell::new(NullIO::new())),
- config,
- self.http_downloader.clone().unwrap(),
- None,
- )?;
- let composer_repo_as_repo: crate::repository::RepositoryInterfaceHandle =
- todo!("ComposerRepository as RepositoryInterface");
+ let composer_repo_as_repo =
+ crate::repository::RepositoryInterfaceHandle::new(ComposerRepository::new(
+ repo_config,
+ std::rc::Rc::new(std::cell::RefCell::new(NullIO::new())),
+ config,
+ self.http_downloader.clone().unwrap(),
+ None,
+ )?);
repo_set.add_repository(composer_repo_as_repo)?;
let mut io = BufferIO::new(String::new(), 0, None)?;
diff --git a/crates/shirabe/src/command/fund_command.rs b/crates/shirabe/src/command/fund_command.rs
index a01a67c..0fab473 100644
--- a/crates/shirabe/src/command/fund_command.rs
+++ b/crates/shirabe/src/command/fund_command.rs
@@ -56,7 +56,7 @@ impl FundCommand {
let repository_manager = composer.get_repository_manager().clone();
let repository_manager = repository_manager.borrow();
let repo = repository_manager.get_local_repository();
- let remote_repos = CompositeRepository::new(
+ let mut remote_repos = CompositeRepository::new(
repository_manager
.get_repositories()
.iter()
@@ -67,7 +67,7 @@ impl FundCommand {
let mut packages_to_load: IndexMap<String, Option<AnyConstraint>> = IndexMap::new();
let mut packages_to_load_names: indexmap::IndexSet<String> = indexmap::IndexSet::new();
- for package in repo.get_packages() {
+ for package in repo.get_packages()? {
if package.as_alias().is_some() {
continue;
}
@@ -84,7 +84,7 @@ impl FundCommand {
IndexMap::from([("dev".to_string(), base_package::STABILITY_DEV)]),
IndexMap::new(),
IndexMap::new(),
- );
+ )?;
// collect funding data from default branches
for (_, package) in &result.packages {
@@ -103,7 +103,7 @@ impl FundCommand {
}
// collect funding from installed packages if none was found in the default branch above
- for package in repo.get_packages() {
+ for package in repo.get_packages()? {
if package.as_alias().is_some() || !packages_to_load_names.contains(&package.get_name())
{
continue;
diff --git a/crates/shirabe/src/command/home_command.rs b/crates/shirabe/src/command/home_command.rs
index e037487..69f2cca 100644
--- a/crates/shirabe/src/command/home_command.rs
+++ b/crates/shirabe/src/command/home_command.rs
@@ -103,7 +103,7 @@ impl HomeCommand {
let mut package_exists = false;
'repos: for repo in &repos {
- for package in repo.find_packages(&package_name, None) {
+ for package in repo.find_packages(&package_name, None)? {
package_exists = true;
if let Some(complete_pkg) = package.as_complete() {
if self.handle_package(complete_pkg, show_homepage, show_only) {
diff --git a/crates/shirabe/src/command/licenses_command.rs b/crates/shirabe/src/command/licenses_command.rs
index 81f9b67..e66267f 100644
--- a/crates/shirabe/src/command/licenses_command.rs
+++ b/crates/shirabe/src/command/licenses_command.rs
@@ -105,20 +105,20 @@ impl LicensesCommand {
}
let no_dev = input.get_option("no-dev").as_bool().unwrap_or(false);
let repo = locker.get_locked_repository(!no_dev)?;
- <crate::repository::LockArrayRepository as crate::repository::RepositoryInterface>::get_packages(&*repo.borrow())
+ <crate::repository::LockArrayRepository as crate::repository::RepositoryInterface>::get_packages(&mut *repo.borrow_mut())?
} else {
let repository_manager = composer.get_repository_manager().clone();
let repository_manager = repository_manager.borrow();
let repo = repository_manager.get_local_repository();
if input.get_option("no-dev").as_bool().unwrap_or(false) {
RepositoryUtils::filter_required_packages(
- &repo.get_packages(),
+ &repo.get_packages()?,
composer.get_package().clone().into(),
false,
vec![],
)
} else {
- repo.get_packages()
+ repo.get_packages()?
}
};
let _ = composer.get_package();
diff --git a/crates/shirabe/src/command/package_discovery_trait.rs b/crates/shirabe/src/command/package_discovery_trait.rs
index eba6b8b..1f2ef5b 100644
--- a/crates/shirabe/src/command/package_discovery_trait.rs
+++ b/crates/shirabe/src/command/package_discovery_trait.rs
@@ -56,7 +56,7 @@ pub trait PackageDiscoveryTrait {
fn normalize_requirements(&self, requires: Vec<String>) -> Vec<IndexMap<String, String>>;
- fn get_repos(&mut self) -> &CompositeRepository {
+ fn get_repos(&mut self) -> &mut CompositeRepository {
if self.get_repos_mut().is_none() {
// PHP: array_merge([new PlatformRepository], RepositoryFactory::defaultReposWithDefaultManager($this->getIO()))
let mut repos: Vec<crate::repository::RepositoryInterfaceHandle> = vec![
@@ -75,7 +75,7 @@ pub trait PackageDiscoveryTrait {
*self.get_repos_mut() = Some(CompositeRepository::new(repos));
}
- self.get_repos_mut().as_ref().unwrap()
+ self.get_repos_mut().as_mut().unwrap()
}
/// @param key-of<BasePackage::STABILITIES>|null $minimumStability
@@ -238,7 +238,7 @@ pub trait PackageDiscoveryTrait {
.map(|rm| rm.get_local_repository());
let mut existing_packages: Vec<String> = vec![];
if let Some(repo) = &installed_repo {
- for package in repo.get_packages() {
+ for package in repo.get_packages()? {
existing_packages.push(package.get_name().to_string());
}
}
@@ -533,7 +533,7 @@ pub trait PackageDiscoveryTrait {
}
// Check if it is a virtual package provided by others
- let providers = repo_set.get_providers(name);
+ let providers = repo_set.get_providers(name)?;
if count(&PhpMixed::List(
providers.iter().map(|_| Box::new(PhpMixed::Null)).collect(),
)) > 0
@@ -593,7 +593,7 @@ pub trait PackageDiscoveryTrait {
self.get_platform_exception_details(
candidate.clone(),
platform_repo,
- ),
+ )?,
),
&[PhpMixed::String(name.to_string())],
),
@@ -694,7 +694,7 @@ pub trait PackageDiscoveryTrait {
self.get_platform_exception_details(
candidate.clone(),
platform_repo,
- ),
+ )?,
),
&[
PhpMixed::String(name.to_string()),
@@ -816,11 +816,10 @@ pub trait PackageDiscoveryTrait {
}
.into());
}
- Ok(self
- .get_repos_mut()
+ self.get_repos_mut()
.as_mut()
.unwrap()
- .search(package.to_string(), 0, None))
+ .search(package.to_string(), 0, None)
})() {
Ok(r) => r,
Err(e) => {
@@ -847,7 +846,7 @@ pub trait PackageDiscoveryTrait {
.find_package(
&result.name,
crate::repository::FindPackageConstraint::String("*".to_string()),
- )
+ )?
.is_some()
{
// Ignore installed package
@@ -864,13 +863,13 @@ pub trait PackageDiscoveryTrait {
&self,
candidate: PackageInterfaceHandle,
platform_repo: Option<&PlatformRepositoryHandle>,
- ) -> String {
+ ) -> anyhow::Result<String> {
let mut details: Vec<String> = vec![];
let platform_repo = match platform_repo {
- None => return String::new(),
+ None => return Ok(String::new()),
Some(p) => p,
};
- let platform_repo = platform_repo.borrow();
+ let mut platform_repo = platform_repo.borrow_mut();
for link in candidate.get_requires().values() {
if !PlatformRepository::is_platform_package(link.get_target()) {
@@ -879,7 +878,7 @@ pub trait PackageDiscoveryTrait {
let platform_pkg = platform_repo.find_package(
link.get_target(),
crate::repository::FindPackageConstraint::String("*".to_string()),
- );
+ )?;
let platform_pkg = match platform_pkg {
None => {
if platform_repo.is_platform_package_disabled(link.get_target()) {
@@ -941,13 +940,13 @@ pub trait PackageDiscoveryTrait {
details.iter().map(|_| Box::new(PhpMixed::Null)).collect(),
)) == 0
{
- return String::new();
+ return Ok(String::new());
}
- format!(
+ Ok(format!(
":{} - {}",
PHP_EOL,
implode(&format!("{} - ", PHP_EOL), &details)
- )
+ ))
}
}
diff --git a/crates/shirabe/src/command/reinstall_command.rs b/crates/shirabe/src/command/reinstall_command.rs
index 29e8129..d183c00 100644
--- a/crates/shirabe/src/command/reinstall_command.rs
+++ b/crates/shirabe/src/command/reinstall_command.rs
@@ -97,7 +97,7 @@ impl ReinstallCommand {
.collect()
})
.unwrap_or_default();
- for package in local_repo.get_canonical_packages() {
+ for package in local_repo.get_canonical_packages()? {
if filter_types.contains(&package.get_type()) {
package_names_to_reinstall.push(package.get_name());
packages_to_reinstall.push(package);
@@ -123,7 +123,7 @@ impl ReinstallCommand {
for pattern in &patterns {
let pattern_regexp = base_package::package_name_to_regexp(pattern);
let mut matched = false;
- for package in local_repo.get_canonical_packages() {
+ for package in local_repo.get_canonical_packages()? {
if Preg::is_match(&pattern_regexp, &package.get_name()).unwrap_or(false) {
matched = true;
package_names_to_reinstall.push(package.get_name());
@@ -146,7 +146,7 @@ impl ReinstallCommand {
uninstall_operations.push(UninstallOperation::new(package));
}
- let present_packages = local_repo.get_packages();
+ let present_packages = local_repo.get_packages()?;
let result_packages: Vec<crate::package::PackageInterfaceHandle> =
present_packages.iter().map(|p| p.clone().into()).collect();
let present_packages: Vec<crate::package::PackageInterfaceHandle> = present_packages
diff --git a/crates/shirabe/src/command/remove_command.rs b/crates/shirabe/src/command/remove_command.rs
index faab5fe..225714e 100644
--- a/crates/shirabe/src/command/remove_command.rs
+++ b/crates/shirabe/src/command/remove_command.rs
@@ -22,6 +22,7 @@ use crate::json::JsonFile;
use crate::package::BasePackage;
use crate::package::base_package;
use crate::repository::CanonicalPackagesTrait;
+use crate::repository::RepositoryInterface;
#[derive(Debug)]
pub struct RemoveCommand {
@@ -198,12 +199,11 @@ impl RemoveCommand {
}
}
- let locked_packages = composer
+ let mut locked_repo = composer
.get_locker()
.borrow_mut()
- .get_locked_repository(true)?
- .borrow()
- .get_packages();
+ .get_locked_repository(true)?;
+ let locked_packages = locked_repo.borrow_mut().get_packages()?;
let mut required: IndexMap<String, bool> = IndexMap::new();
for link in composer
@@ -435,7 +435,7 @@ impl RemoveCommand {
composer_opt
.get_plugin_manager()
.borrow_mut()
- .deactivate_installed_plugins();
+ .deactivate_installed_plugins()?;
}
self.reset_composer();
@@ -626,7 +626,7 @@ impl RemoveCommand {
.get_repository_manager()
.borrow()
.get_local_repository()
- .find_packages(package, None)
+ .find_packages(package, None)?
.is_empty()
{
io.write_error(&format!(
diff --git a/crates/shirabe/src/command/require_command.rs b/crates/shirabe/src/command/require_command.rs
index cfa7bba..e5ddbe7 100644
--- a/crates/shirabe/src/command/require_command.rs
+++ b/crates/shirabe/src/command/require_command.rs
@@ -337,7 +337,7 @@ impl RequireCommand {
let found_packages: Vec<crate::package::PackageInterfaceHandle> = self
.get_repos()
- .find_packages(name, None)
+ .find_packages(name, None)?
.into_iter()
.map(|p| p.into())
.collect();
@@ -557,7 +557,7 @@ impl RequireCommand {
composer
.get_plugin_manager()
.borrow_mut()
- .deactivate_installed_plugins();
+ .deactivate_installed_plugins()?;
let io = self.get_io().clone();
let do_update_result =
@@ -955,7 +955,7 @@ impl RequireCommand {
let mut package = repo.find_package(
package_name,
crate::repository::FindPackageConstraint::String("*".to_string()),
- );
+ )?;
while let Some(alias) = package.as_ref().and_then(|p| p.as_alias()) {
package = Some(alias.get_alias_of().into());
}
diff --git a/crates/shirabe/src/command/search_command.rs b/crates/shirabe/src/command/search_command.rs
index 2c5d27d..593b927 100644
--- a/crates/shirabe/src/command/search_command.rs
+++ b/crates/shirabe/src/command/search_command.rs
@@ -96,7 +96,7 @@ impl SearchCommand {
{
all_repos.push(r.clone());
}
- let repos = CompositeRepository::new(all_repos);
+ let mut repos = CompositeRepository::new(all_repos);
// TODO(plugin): dispatch CommandEvent for search command
let command_event = CommandEvent::new(PluginEvents::COMMAND, "search", input, output);
@@ -136,7 +136,7 @@ impl SearchCommand {
query = preg_quote(&query, None);
}
- let results = repos.search(query, mode, r#type);
+ let results = repos.search(query, mode, r#type)?;
if results.len() > 0 && format == "text" {
let width = self.get_terminal_width();
diff --git a/crates/shirabe/src/command/show_command.rs b/crates/shirabe/src/command/show_command.rs
index bb7b909..9592f4e 100644
--- a/crates/shirabe/src/command/show_command.rs
+++ b/crates/shirabe/src/command/show_command.rs
@@ -195,7 +195,7 @@ impl ShowCommand {
// TODO(phase-b): PHP shares a single $platformRepo instance by reference.
// We clone the overrides and re-construct as needed because PlatformRepository
// is not Clone (PHP class semantics; Phase D will introduce Rc sharing).
- let platform_repo = PlatformRepository::new(vec![], platform_overrides.clone())?;
+ let mut platform_repo = PlatformRepository::new(vec![], platform_overrides.clone())?;
let make_platform_repo = || -> anyhow::Result<PlatformRepository> {
PlatformRepository::new(vec![], platform_overrides.clone())
};
@@ -396,7 +396,7 @@ impl ShowCommand {
.get_repository_manager()
.borrow()
.get_local_repository()
- .get_packages();
+ .get_packages()?;
let packages = RepositoryUtils::filter_required_packages(
&local_packages,
root_pkg.clone().into(),
@@ -431,7 +431,7 @@ impl ShowCommand {
RepositoryInterfaceHandle::new(InstalledRepository::new(vec![root_repo, lr]));
}
- if installed_repo.get_packages().is_empty() {
+ if installed_repo.get_packages()?.is_empty() {
let has_non_platform_reqs = |reqs: &IndexMap<String, Link>| -> bool {
reqs.keys()
.any(|name| !PlatformRepository::is_platform_package(name))
@@ -590,7 +590,7 @@ impl ShowCommand {
latest_package = self.find_latest_package(
package.clone().into(),
composer.as_ref().unwrap(),
- &platform_repo,
+ &mut platform_repo,
input.get_option("major-only").as_bool().unwrap_or(false),
input.get_option("minor-only").as_bool().unwrap_or(false),
input.get_option("patch-only").as_bool().unwrap_or(false),
@@ -645,7 +645,7 @@ impl ShowCommand {
self.print_package_info(
package.clone(),
&versions_map,
- &*installed_repo.borrow(),
+ &mut *installed_repo.borrow_mut(),
latest_package,
)?;
}
@@ -656,7 +656,7 @@ impl ShowCommand {
// show tree view if requested
if input.get_option("tree").as_bool() == Some(true) {
let root_requires = self.get_root_requires();
- let mut packages = installed_repo.get_packages();
+ let mut packages = installed_repo.get_packages()?;
packages.sort_by(|a, b| {
let sa: String = a.to_string();
let sb: String = b.to_string();
@@ -746,7 +746,7 @@ impl ShowCommand {
if false {
let _ = package_filter.as_deref();
} else {
- for package in repo.get_packages() {
+ for package in repo.get_packages()? {
let existing = packages
.get(&type_owned)
.and_then(|m| m.get(&package.get_name()));
@@ -849,7 +849,7 @@ impl ShowCommand {
let latest = self.find_latest_package(
package.clone(),
composer.as_ref().unwrap(),
- &platform_repo,
+ &mut platform_repo,
show_major_only,
show_minor_only,
show_patch_only,
@@ -1574,10 +1574,10 @@ impl ShowCommand {
&mut self,
package: CompletePackageInterfaceHandle,
versions: &IndexMap<String, String>,
- installed_repo: &dyn RepositoryInterface,
+ installed_repo: &mut dyn RepositoryInterface,
latest_package: Option<PackageInterfaceHandle>,
) -> anyhow::Result<()> {
- self.print_meta(package.clone(), versions, installed_repo, latest_package);
+ self.print_meta(package.clone(), versions, installed_repo, latest_package)?;
self.print_links(package.clone(), Link::TYPE_REQUIRE, None);
self.print_links(
package.clone(),
@@ -1604,9 +1604,9 @@ impl ShowCommand {
&mut self,
package: CompletePackageInterfaceHandle,
versions: &IndexMap<String, String>,
- installed_repo: &dyn RepositoryInterface,
+ installed_repo: &mut dyn RepositoryInterface,
latest_package: Option<PackageInterfaceHandle>,
- ) {
+ ) -> anyhow::Result<()> {
let is_installed_package = !PlatformRepository::is_platform_package(&package.get_name())
&& installed_repo.has_package(package.clone().into());
@@ -1621,7 +1621,7 @@ impl ShowCommand {
let keywords = package.get_keywords();
self.get_io()
.write(&format!("<info>keywords</info> : {}", keywords.join(", ")));
- self.print_versions(package.clone(), versions, installed_repo);
+ self.print_versions(package.clone(), versions, installed_repo)?;
if is_installed_package {
if let Some(rd) = package.get_release_date() {
let rel = self.get_relative_time(&rd);
@@ -1755,6 +1755,8 @@ impl ShowCommand {
self.get_io().write(&include_paths.join(", "));
}
}
+
+ Ok(())
}
/// Prints all available versions of this package and highlights the installed one if any.
@@ -1762,13 +1764,13 @@ impl ShowCommand {
&mut self,
package: CompletePackageInterfaceHandle,
versions: &IndexMap<String, String>,
- installed_repo: &dyn RepositoryInterface,
- ) {
+ installed_repo: &mut dyn RepositoryInterface,
+ ) -> anyhow::Result<()> {
let mut versions_keys: Vec<String> = versions.keys().cloned().collect();
versions_keys = Semver::rsort(versions_keys);
// highlight installed version
- let installed_packages = installed_repo.find_packages(&package.get_name(), None);
+ let installed_packages = installed_repo.find_packages(&package.get_name(), None)?;
if !installed_packages.is_empty() {
for installed_package in installed_packages.iter() {
let installed_version = installed_package.get_pretty_version();
@@ -1788,6 +1790,8 @@ impl ShowCommand {
self.get_io()
.write(&format!("<info>versions</info> : {}", versions_str));
+
+ Ok(())
}
/// print link objects
@@ -2561,7 +2565,7 @@ impl ShowCommand {
&mut self,
package: PackageInterfaceHandle,
composer: &PartialComposerHandle,
- platform_repo: &PlatformRepository,
+ platform_repo: &mut PlatformRepository,
major_only: bool,
minor_only: bool,
patch_only: bool,
diff --git a/crates/shirabe/src/command/status_command.rs b/crates/shirabe/src/command/status_command.rs
index 457c546..e729e1f 100644
--- a/crates/shirabe/src/command/status_command.rs
+++ b/crates/shirabe/src/command/status_command.rs
@@ -118,7 +118,7 @@ impl StatusCommand {
.get_repository_manager()
.borrow()
.get_local_repository()
- .get_canonical_packages();
+ .get_canonical_packages()?;
for package in packages {
let target_dir = composer
.get_installation_manager()
diff --git a/crates/shirabe/src/command/suggests_command.rs b/crates/shirabe/src/command/suggests_command.rs
index 2091608..92a4288 100644
--- a/crates/shirabe/src/command/suggests_command.rs
+++ b/crates/shirabe/src/command/suggests_command.rs
@@ -87,11 +87,11 @@ impl SuggestsCommand {
);
}
- let installed_repo = InstalledRepository::new(installed_repos);
+ let mut installed_repo = InstalledRepository::new(installed_repos);
let mut reporter = SuggestedPackagesReporter::new(self.get_io().clone());
let filter = input.get_argument("packages");
- let mut packages = RepositoryInterface::get_packages(&installed_repo);
+ let mut packages = RepositoryInterface::get_packages(&mut installed_repo)?;
let root_pkg_as_base: crate::package::BasePackageHandle =
composer.get_package().clone().into();
packages.push(root_pkg_as_base);
@@ -121,7 +121,7 @@ impl SuggestsCommand {
None
};
- reporter.output(mode, Some(&installed_repo), only_dependents_of);
+ reporter.output(mode, Some(&mut installed_repo), only_dependents_of)?;
Ok(0)
}
diff --git a/crates/shirabe/src/command/update_command.rs b/crates/shirabe/src/command/update_command.rs
index 7fcfa4d..e28d407 100644
--- a/crates/shirabe/src/command/update_command.rs
+++ b/crates/shirabe/src/command/update_command.rs
@@ -212,8 +212,8 @@ impl UpdateCommand {
.get_locker()
.borrow_mut()
.get_locked_repository(true)?
- .borrow()
- .get_canonical_packages()
+ .borrow_mut()
+ .get_canonical_packages()?
{
if package.is_dev() {
continue;
@@ -498,19 +498,17 @@ impl UpdateCommand {
let mut autocompleter_values: IndexMap<String, String> = IndexMap::new();
let installed_packages: Vec<crate::package::PackageInterfaceHandle> =
if composer_ref.get_locker().borrow_mut().is_locked() {
- CanonicalPackagesTrait::get_packages(
- &*composer_ref
- .get_locker()
- .borrow_mut()
- .get_locked_repository(true)?
- .borrow(),
- )
+ let locked_repo = composer_ref
+ .get_locker()
+ .borrow_mut()
+ .get_locked_repository(true)?;
+ locked_repo.borrow_mut().get_canonical_packages()?
} else {
composer_ref
.get_repository_manager()
.borrow()
.get_local_repository()
- .get_packages()
+ .get_packages()?
};
let mut version_selector = self.create_version_selector(composer)?;
for package in &installed_packages {
diff --git a/crates/shirabe/src/command/validate_command.rs b/crates/shirabe/src/command/validate_command.rs
index da76eca..b168b03 100644
--- a/crates/shirabe/src/command/validate_command.rs
+++ b/crates/shirabe/src/command/validate_command.rs
@@ -210,7 +210,7 @@ impl ValidateCommand {
.get_repository_manager()
.borrow()
.get_local_repository()
- .get_packages();
+ .get_packages()?;
for package in packages {
let path = composer
.get_installation_manager()