aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/shirabe/src/package
diff options
context:
space:
mode:
Diffstat (limited to 'crates/shirabe/src/package')
-rw-r--r--crates/shirabe/src/package/alias_package.rs19
-rw-r--r--crates/shirabe/src/package/base_package.rs31
-rw-r--r--crates/shirabe/src/package/complete_package.rs118
-rw-r--r--crates/shirabe/src/package/dumper/array_dumper.rs30
-rw-r--r--crates/shirabe/src/package/handle.rs72
-rw-r--r--crates/shirabe/src/package/package.rs165
-rw-r--r--crates/shirabe/src/package/package_interface.rs33
-rw-r--r--crates/shirabe/src/package/root_alias_package.rs18
-rw-r--r--crates/shirabe/src/package/root_package.rs220
-rw-r--r--crates/shirabe/src/package/root_package_interface.rs10
10 files changed, 366 insertions, 350 deletions
diff --git a/crates/shirabe/src/package/alias_package.rs b/crates/shirabe/src/package/alias_package.rs
index b4ddc70..f4b9b55 100644
--- a/crates/shirabe/src/package/alias_package.rs
+++ b/crates/shirabe/src/package/alias_package.rs
@@ -8,6 +8,7 @@ use shirabe_semver::constraint::SimpleConstraint;
use crate::package::BasePackage;
use crate::package::Link;
+use crate::package::Mirror;
use crate::package::PackageHandle;
use crate::package::PackageInterface;
use crate::package::version::VersionParser;
@@ -305,8 +306,8 @@ impl PackageInterface for AliasPackage {
todo!("AliasPackage::get_type cannot return &str across the aliasOf handle")
}
- fn get_target_dir(&self) -> Option<&str> {
- todo!("AliasPackage::get_target_dir cannot return &str across the aliasOf handle")
+ fn get_target_dir(&self) -> Option<String> {
+ self.alias_of.get_target_dir()
}
fn get_extra(&self) -> IndexMap<String, PhpMixed> {
@@ -341,11 +342,11 @@ impl PackageInterface for AliasPackage {
self.alias_of.set_source_reference(reference);
}
- fn set_source_mirrors(&mut self, mirrors: Option<Vec<IndexMap<String, PhpMixed>>>) {
+ fn set_source_mirrors(&mut self, mirrors: Option<Vec<Mirror>>) {
self.alias_of.set_source_mirrors(mirrors);
}
- fn get_source_mirrors(&self) -> Option<Vec<IndexMap<String, PhpMixed>>> {
+ fn get_source_mirrors(&self) -> Option<Vec<Mirror>> {
self.alias_of.get_source_mirrors()
}
@@ -381,11 +382,11 @@ impl PackageInterface for AliasPackage {
self.alias_of.get_transport_options()
}
- fn set_dist_mirrors(&mut self, mirrors: Option<Vec<IndexMap<String, PhpMixed>>>) {
+ fn set_dist_mirrors(&mut self, mirrors: Option<Vec<Mirror>>) {
self.alias_of.set_dist_mirrors(mirrors);
}
- fn get_dist_mirrors(&self) -> Option<Vec<IndexMap<String, PhpMixed>>> {
+ fn get_dist_mirrors(&self) -> Option<Vec<Mirror>> {
self.alias_of.get_dist_mirrors()
}
@@ -441,7 +442,11 @@ impl PackageInterface for AliasPackage {
self.alias_of.set_source_dist_references(reference);
}
- fn get_full_pretty_version(&self, truncate: bool, display_mode: i64) -> String {
+ fn get_full_pretty_version(
+ &self,
+ truncate: bool,
+ display_mode: crate::package::DisplayMode,
+ ) -> String {
self.alias_of
.get_full_pretty_version(truncate, display_mode)
}
diff --git a/crates/shirabe/src/package/base_package.rs b/crates/shirabe/src/package/base_package.rs
index ca6f171..ec2fd3f 100644
--- a/crates/shirabe/src/package/base_package.rs
+++ b/crates/shirabe/src/package/base_package.rs
@@ -3,8 +3,9 @@
use std::sync::LazyLock;
use indexmap::IndexMap;
-use shirabe_php_shim::{LogicException, UnexpectedValueException, preg_quote};
+use shirabe_php_shim::preg_quote;
+use crate::package::DisplayMode;
use crate::package::Link;
use crate::package::PackageInterface;
use crate::repository::PlatformRepository;
@@ -109,48 +110,38 @@ pub trait BasePackage: PackageInterface + std::fmt::Display {
// get_pretty_string is inherited from PackageInterface.
- fn get_full_pretty_version(&self, truncate: bool, display_mode: i64) -> anyhow::Result<String> {
- const DISPLAY_SOURCE_REF_IF_DEV: i64 = <dyn PackageInterface>::DISPLAY_SOURCE_REF_IF_DEV;
- const DISPLAY_SOURCE_REF: i64 = <dyn PackageInterface>::DISPLAY_SOURCE_REF;
- const DISPLAY_DIST_REF: i64 = <dyn PackageInterface>::DISPLAY_DIST_REF;
-
- if display_mode == DISPLAY_SOURCE_REF_IF_DEV
+ fn get_full_pretty_version(&self, truncate: bool, display_mode: DisplayMode) -> String {
+ if display_mode == DisplayMode::SourceRefIfDev
&& (!self.is_dev()
|| (!["hg", "git"].contains(&self.get_source_type().unwrap_or_default())
&& (self.get_source_type().unwrap_or_default() != ""
|| self.get_dist_reference().unwrap_or_default() == "")))
{
- return Ok(self.get_pretty_version().to_string());
+ return self.get_pretty_version().to_string();
}
let reference: Option<&str> = match display_mode {
- DISPLAY_SOURCE_REF_IF_DEV => {
+ DisplayMode::SourceRefIfDev => {
if self.get_source_reference().unwrap_or_default() != "" {
self.get_source_reference()
} else {
self.get_dist_reference()
}
}
- DISPLAY_SOURCE_REF => self.get_source_reference(),
- DISPLAY_DIST_REF => self.get_dist_reference(),
- _ => {
- return Err(anyhow::anyhow!(UnexpectedValueException {
- message: format!("Display mode {} is not supported", display_mode),
- code: 0,
- }));
- }
+ DisplayMode::SourceRef => self.get_source_reference(),
+ DisplayMode::DistRef => self.get_dist_reference(),
};
let reference = match reference {
- None => return Ok(self.get_pretty_version().to_string()),
+ None => return self.get_pretty_version().to_string(),
Some(r) => r,
};
if truncate && reference.len() == 40 && self.get_source_type() != Some("svn") {
- return Ok(format!("{} {}", self.get_pretty_version(), &reference[..7]));
+ return format!("{} {}", self.get_pretty_version(), &reference[..7]);
}
- Ok(format!("{} {}", self.get_pretty_version(), reference))
+ format!("{} {}", self.get_pretty_version(), reference)
}
fn get_stability_priority(&self) -> i64 {
diff --git a/crates/shirabe/src/package/complete_package.rs b/crates/shirabe/src/package/complete_package.rs
index 97669d8..f8293a5 100644
--- a/crates/shirabe/src/package/complete_package.rs
+++ b/crates/shirabe/src/package/complete_package.rs
@@ -1,6 +1,8 @@
//! ref: composer/src/Composer/Package/CompletePackage.php
use crate::package::CompletePackageInterface;
+use crate::package::DisplayMode;
+use crate::package::Mirror;
use crate::package::Package;
use crate::package::PackageInterface;
use indexmap::IndexMap;
@@ -154,159 +156,159 @@ impl CompletePackageInterface for CompletePackage {
impl PackageInterface for CompletePackage {
fn get_name(&self) -> &str {
- todo!()
+ self.inner.get_name()
}
fn get_pretty_name(&self) -> &str {
- todo!()
+ self.inner.get_pretty_name()
}
fn get_names(&self, provides: bool) -> Vec<String> {
- todo!()
+ self.inner.get_names(provides)
}
fn set_id(&mut self, id: i64) {
- todo!()
+ self.inner.set_id(id);
}
fn get_id(&self) -> i64 {
- todo!()
+ self.inner.get_id()
}
fn is_dev(&self) -> bool {
- todo!()
+ self.inner.is_dev()
}
fn get_type(&self) -> &str {
- todo!()
+ PackageInterface::get_type(&self.inner)
}
- fn get_target_dir(&self) -> Option<&str> {
- todo!()
+ fn get_target_dir(&self) -> Option<String> {
+ self.inner.get_target_dir()
}
fn get_extra(&self) -> IndexMap<String, PhpMixed> {
- todo!()
+ self.inner.get_extra().clone()
}
fn set_installation_source(&mut self, r#type: Option<String>) {
- todo!()
+ self.inner.set_installation_source(r#type);
}
fn get_installation_source(&self) -> Option<&str> {
- todo!()
+ self.inner.get_installation_source()
}
fn get_source_type(&self) -> Option<&str> {
- todo!()
+ self.inner.get_source_type()
}
fn get_source_url(&self) -> Option<&str> {
- todo!()
+ self.inner.get_source_url()
}
fn get_source_urls(&self) -> Vec<String> {
- todo!()
+ self.inner.get_source_urls()
}
fn get_source_reference(&self) -> Option<&str> {
- todo!()
+ self.inner.get_source_reference()
}
- fn get_source_mirrors(&self) -> Option<Vec<IndexMap<String, PhpMixed>>> {
- todo!()
+ fn get_source_mirrors(&self) -> Option<Vec<Mirror>> {
+ self.inner.get_source_mirrors().cloned()
}
- fn set_source_mirrors(&mut self, mirrors: Option<Vec<IndexMap<String, PhpMixed>>>) {
- todo!()
+ fn set_source_mirrors(&mut self, mirrors: Option<Vec<Mirror>>) {
+ self.inner.set_source_mirrors(mirrors);
}
fn get_dist_type(&self) -> Option<&str> {
- todo!()
+ self.inner.get_dist_type()
}
fn get_dist_url(&self) -> Option<&str> {
- todo!()
+ self.inner.get_dist_url()
}
fn get_dist_urls(&self) -> Vec<String> {
- todo!()
+ self.inner.get_dist_urls()
}
fn get_dist_reference(&self) -> Option<&str> {
- todo!()
+ self.inner.get_dist_reference()
}
fn get_dist_sha1_checksum(&self) -> Option<&str> {
- todo!()
+ self.inner.get_dist_sha1_checksum()
}
- fn get_dist_mirrors(&self) -> Option<Vec<IndexMap<String, PhpMixed>>> {
- todo!()
+ fn get_dist_mirrors(&self) -> Option<Vec<Mirror>> {
+ self.inner.get_dist_mirrors().cloned()
}
- fn set_dist_mirrors(&mut self, mirrors: Option<Vec<IndexMap<String, PhpMixed>>>) {
- todo!()
+ fn set_dist_mirrors(&mut self, mirrors: Option<Vec<Mirror>>) {
+ self.inner.set_dist_mirrors(mirrors);
}
fn get_version(&self) -> &str {
- todo!()
+ self.inner.get_version()
}
fn get_pretty_version(&self) -> &str {
- todo!()
+ self.inner.get_pretty_version()
}
- fn get_full_pretty_version(&self, truncate: bool, display_mode: i64) -> String {
- todo!()
+ fn get_full_pretty_version(&self, truncate: bool, display_mode: DisplayMode) -> String {
+ PackageInterface::get_full_pretty_version(&self.inner, truncate, display_mode)
}
fn get_release_date(&self) -> Option<chrono::DateTime<chrono::Utc>> {
- todo!()
+ self.inner.get_release_date().copied()
}
fn get_stability(&self) -> &str {
- todo!()
+ self.inner.get_stability()
}
fn get_requires(&self) -> IndexMap<String, super::Link> {
- todo!()
+ self.inner.get_requires().clone()
}
fn get_conflicts(&self) -> IndexMap<String, super::Link> {
- todo!()
+ self.inner.get_conflicts().clone()
}
fn get_provides(&self) -> IndexMap<String, super::Link> {
- todo!()
+ self.inner.get_provides().clone()
}
fn get_replaces(&self) -> IndexMap<String, super::Link> {
- todo!()
+ self.inner.get_replaces().clone()
}
fn get_dev_requires(&self) -> IndexMap<String, super::Link> {
- todo!()
+ self.inner.get_dev_requires().clone()
}
fn get_suggests(&self) -> IndexMap<String, String> {
- todo!()
+ self.inner.get_suggests().clone()
}
fn get_autoload(&self) -> IndexMap<String, PhpMixed> {
- todo!()
+ self.inner.get_autoload().clone()
}
fn get_dev_autoload(&self) -> IndexMap<String, PhpMixed> {
- todo!()
+ self.inner.get_dev_autoload().clone()
}
fn get_include_paths(&self) -> Vec<String> {
- todo!()
+ self.inner.get_include_paths().clone()
}
fn get_php_ext(&self) -> Option<IndexMap<String, PhpMixed>> {
- todo!()
+ self.inner.get_php_ext().cloned()
}
fn set_repository(
@@ -321,55 +323,55 @@ impl PackageInterface for CompletePackage {
}
fn get_binaries(&self) -> Vec<String> {
- todo!()
+ self.inner.get_binaries().clone()
}
fn get_unique_name(&self) -> String {
- todo!()
+ self.inner.get_unique_name()
}
fn get_notification_url(&self) -> Option<&str> {
- todo!()
+ self.inner.get_notification_url()
}
fn get_pretty_string(&self) -> String {
- todo!()
+ self.inner.get_pretty_string()
}
fn is_default_branch(&self) -> bool {
- todo!()
+ self.inner.is_default_branch()
}
fn get_transport_options(&self) -> IndexMap<String, PhpMixed> {
- todo!()
+ self.inner.get_transport_options().clone()
}
fn set_transport_options(&mut self, options: IndexMap<String, PhpMixed>) {
- todo!()
+ self.inner.set_transport_options(options);
}
fn set_source_reference(&mut self, reference: Option<String>) {
- todo!()
+ self.inner.set_source_reference(reference);
}
fn set_source_url(&mut self, url: Option<String>) {
- todo!()
+ self.inner.set_source_url(url);
}
fn set_dist_url(&mut self, url: Option<String>) {
- todo!()
+ self.inner.set_dist_url(url);
}
fn set_dist_type(&mut self, r#type: Option<String>) {
- todo!()
+ self.inner.set_dist_type(r#type);
}
fn set_dist_reference(&mut self, reference: Option<String>) {
- todo!()
+ self.inner.set_dist_reference(reference);
}
fn set_source_dist_references(&mut self, reference: &str) {
- todo!()
+ PackageInterface::set_source_dist_references(&mut self.inner, reference);
}
}
diff --git a/crates/shirabe/src/package/dumper/array_dumper.rs b/crates/shirabe/src/package/dumper/array_dumper.rs
index 3d3b27a..3523d58 100644
--- a/crates/shirabe/src/package/dumper/array_dumper.rs
+++ b/crates/shirabe/src/package/dumper/array_dumper.rs
@@ -3,9 +3,21 @@
use indexmap::IndexMap;
use shirabe_php_shim::PhpMixed;
+use crate::package::Mirror;
use crate::package::PackageInterfaceHandle;
use crate::package::SUPPORTED_LINK_TYPES;
+/// Serializes a Mirror back into the PHP array shape `{url, preferred}`.
+fn mirror_to_php(mirror: Mirror) -> PhpMixed {
+ let mut entry: IndexMap<String, Box<PhpMixed>> = IndexMap::new();
+ entry.insert("url".to_string(), Box::new(PhpMixed::String(mirror.url)));
+ entry.insert(
+ "preferred".to_string(),
+ Box::new(PhpMixed::Bool(mirror.preferred)),
+ );
+ PhpMixed::Array(entry)
+}
+
#[derive(Debug)]
pub struct ArrayDumper;
@@ -62,14 +74,7 @@ impl ArrayDumper {
mirrors
.into_iter()
.enumerate()
- .map(|(i, m)| {
- (
- i.to_string(),
- Box::new(PhpMixed::Array(
- m.into_iter().map(|(k, v)| (k, Box::new(v))).collect(),
- )),
- )
- })
+ .map(|(i, m)| (i.to_string(), Box::new(mirror_to_php(m))))
.collect(),
)),
);
@@ -108,14 +113,7 @@ impl ArrayDumper {
mirrors
.into_iter()
.enumerate()
- .map(|(i, m)| {
- (
- i.to_string(),
- Box::new(PhpMixed::Array(
- m.into_iter().map(|(k, v)| (k, Box::new(v))).collect(),
- )),
- )
- })
+ .map(|(i, m)| (i.to_string(), Box::new(mirror_to_php(m))))
.collect(),
)),
);
diff --git a/crates/shirabe/src/package/handle.rs b/crates/shirabe/src/package/handle.rs
index aecc219..aa21bf1 100644
--- a/crates/shirabe/src/package/handle.rs
+++ b/crates/shirabe/src/package/handle.rs
@@ -193,7 +193,7 @@ macro_rules! delegate_package_interface_to_inner {
fn get_type(&self) -> &str {
self.$field.get_type()
}
- fn get_target_dir(&self) -> Option<&str> {
+ fn get_target_dir(&self) -> Option<String> {
self.$field.get_target_dir()
}
fn get_extra(&self) -> indexmap::IndexMap<String, shirabe_php_shim::PhpMixed> {
@@ -217,15 +217,10 @@ macro_rules! delegate_package_interface_to_inner {
fn get_source_reference(&self) -> Option<&str> {
self.$field.get_source_reference()
}
- fn get_source_mirrors(
- &self,
- ) -> Option<Vec<indexmap::IndexMap<String, shirabe_php_shim::PhpMixed>>> {
+ fn get_source_mirrors(&self) -> Option<Vec<crate::package::Mirror>> {
self.$field.get_source_mirrors()
}
- fn set_source_mirrors(
- &mut self,
- mirrors: Option<Vec<indexmap::IndexMap<String, shirabe_php_shim::PhpMixed>>>,
- ) {
+ fn set_source_mirrors(&mut self, mirrors: Option<Vec<crate::package::Mirror>>) {
self.$field.set_source_mirrors(mirrors);
}
fn get_dist_type(&self) -> Option<&str> {
@@ -243,15 +238,10 @@ macro_rules! delegate_package_interface_to_inner {
fn get_dist_sha1_checksum(&self) -> Option<&str> {
self.$field.get_dist_sha1_checksum()
}
- fn get_dist_mirrors(
- &self,
- ) -> Option<Vec<indexmap::IndexMap<String, shirabe_php_shim::PhpMixed>>> {
+ fn get_dist_mirrors(&self) -> Option<Vec<crate::package::Mirror>> {
self.$field.get_dist_mirrors()
}
- fn set_dist_mirrors(
- &mut self,
- mirrors: Option<Vec<indexmap::IndexMap<String, shirabe_php_shim::PhpMixed>>>,
- ) {
+ fn set_dist_mirrors(&mut self, mirrors: Option<Vec<crate::package::Mirror>>) {
self.$field.set_dist_mirrors(mirrors);
}
fn get_version(&self) -> &str {
@@ -260,7 +250,11 @@ macro_rules! delegate_package_interface_to_inner {
fn get_pretty_version(&self) -> &str {
self.$field.get_pretty_version()
}
- fn get_full_pretty_version(&self, truncate: bool, display_mode: i64) -> String {
+ fn get_full_pretty_version(
+ &self,
+ truncate: bool,
+ display_mode: crate::package::DisplayMode,
+ ) -> String {
self.$field.get_full_pretty_version(truncate, display_mode)
}
fn get_release_date(&self) -> Option<chrono::DateTime<chrono::Utc>> {
@@ -408,11 +402,7 @@ macro_rules! impl_package_interface_handle {
}
pub fn get_target_dir(&self) -> Option<String> {
- self.0
- .borrow()
- .as_package_interface()
- .get_target_dir()
- .map(str::to_string)
+ self.0.borrow().as_package_interface().get_target_dir()
}
pub fn get_extra(&self) -> indexmap::IndexMap<String, shirabe_php_shim::PhpMixed> {
@@ -462,16 +452,11 @@ macro_rules! impl_package_interface_handle {
.map(str::to_string)
}
- pub fn get_source_mirrors(
- &self,
- ) -> Option<Vec<indexmap::IndexMap<String, shirabe_php_shim::PhpMixed>>> {
+ pub fn get_source_mirrors(&self) -> Option<Vec<crate::package::Mirror>> {
self.0.borrow().as_package_interface().get_source_mirrors()
}
- pub fn set_source_mirrors(
- &self,
- mirrors: Option<Vec<indexmap::IndexMap<String, shirabe_php_shim::PhpMixed>>>,
- ) {
+ pub fn set_source_mirrors(&self, mirrors: Option<Vec<crate::package::Mirror>>) {
self.0
.borrow_mut()
.as_package_interface_mut()
@@ -514,16 +499,11 @@ macro_rules! impl_package_interface_handle {
.map(str::to_string)
}
- pub fn get_dist_mirrors(
- &self,
- ) -> Option<Vec<indexmap::IndexMap<String, shirabe_php_shim::PhpMixed>>> {
+ pub fn get_dist_mirrors(&self) -> Option<Vec<crate::package::Mirror>> {
self.0.borrow().as_package_interface().get_dist_mirrors()
}
- pub fn set_dist_mirrors(
- &self,
- mirrors: Option<Vec<indexmap::IndexMap<String, shirabe_php_shim::PhpMixed>>>,
- ) {
+ pub fn set_dist_mirrors(&self, mirrors: Option<Vec<crate::package::Mirror>>) {
self.0
.borrow_mut()
.as_package_interface_mut()
@@ -546,7 +526,11 @@ macro_rules! impl_package_interface_handle {
.to_string()
}
- pub fn get_full_pretty_version(&self, truncate: bool, display_mode: i64) -> String {
+ pub fn get_full_pretty_version(
+ &self,
+ truncate: bool,
+ display_mode: crate::package::DisplayMode,
+ ) -> String {
self.0
.borrow()
.as_package_interface()
@@ -997,7 +981,7 @@ macro_rules! impl_root_package_interface_handle {
.clone()
}
- pub fn set_requires(&self, requires: Vec<crate::package::Link>) {
+ pub fn set_requires(&self, requires: indexmap::IndexMap<String, crate::package::Link>) {
self.0
.borrow_mut()
.as_root_package_interface_mut()
@@ -1005,7 +989,10 @@ macro_rules! impl_root_package_interface_handle {
.set_requires(requires);
}
- pub fn set_dev_requires(&self, dev_requires: Vec<crate::package::Link>) {
+ pub fn set_dev_requires(
+ &self,
+ dev_requires: indexmap::IndexMap<String, crate::package::Link>,
+ ) {
self.0
.borrow_mut()
.as_root_package_interface_mut()
@@ -1013,7 +1000,10 @@ macro_rules! impl_root_package_interface_handle {
.set_dev_requires(dev_requires);
}
- pub fn set_conflicts(&self, conflicts: Vec<crate::package::Link>) {
+ pub fn set_conflicts(
+ &self,
+ conflicts: indexmap::IndexMap<String, crate::package::Link>,
+ ) {
self.0
.borrow_mut()
.as_root_package_interface_mut()
@@ -1021,7 +1011,7 @@ macro_rules! impl_root_package_interface_handle {
.set_conflicts(conflicts);
}
- pub fn set_provides(&self, provides: Vec<crate::package::Link>) {
+ pub fn set_provides(&self, provides: indexmap::IndexMap<String, crate::package::Link>) {
self.0
.borrow_mut()
.as_root_package_interface_mut()
@@ -1029,7 +1019,7 @@ macro_rules! impl_root_package_interface_handle {
.set_provides(provides);
}
- pub fn set_replaces(&self, replaces: Vec<crate::package::Link>) {
+ pub fn set_replaces(&self, replaces: indexmap::IndexMap<String, crate::package::Link>) {
self.0
.borrow_mut()
.as_root_package_interface_mut()
diff --git a/crates/shirabe/src/package/package.rs b/crates/shirabe/src/package/package.rs
index f573326..f1c8cc9 100644
--- a/crates/shirabe/src/package/package.rs
+++ b/crates/shirabe/src/package/package.rs
@@ -3,13 +3,14 @@
use std::rc::Rc;
use chrono::{DateTime, Utc};
-use indexmap::IndexMap;
+use indexmap::{IndexMap, IndexSet};
use shirabe_external_packages::composer::pcre::Preg;
use shirabe_external_packages::composer::util::ComposerMirror;
use shirabe_php_shim::{E_USER_DEPRECATED, LogicException, PhpMixed, strpos, trigger_error};
use crate::package::BasePackage;
+use crate::package::DisplayMode;
use crate::package::Link;
use crate::package::PackageInterface;
use crate::package::version::VersionParser;
@@ -583,128 +584,144 @@ impl BasePackage for Package {
}
impl std::fmt::Display for Package {
- fn fmt(&self, _f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
- todo!()
+ fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
+ write!(f, "{}", self.get_unique_name())
}
}
impl PackageInterface for Package {
fn get_name(&self) -> &str {
- todo!()
+ &self.name
}
fn get_pretty_name(&self) -> &str {
- todo!()
+ &self.pretty_name
}
- fn get_names(&self, _provides: bool) -> Vec<String> {
- todo!()
+ fn get_names(&self, provides: bool) -> Vec<String> {
+ let mut names: IndexSet<String> = IndexSet::new();
+ names.insert(self.get_name().to_string());
+
+ if provides {
+ for (_, link) in self.get_provides() {
+ names.insert(link.get_target().to_string());
+ }
+ }
+
+ for (_, link) in self.get_replaces() {
+ names.insert(link.get_target().to_string());
+ }
+
+ names.into_iter().collect()
}
- fn set_id(&mut self, _id: i64) {
- todo!()
+ fn set_id(&mut self, id: i64) {
+ self.id = id;
}
fn get_id(&self) -> i64 {
- todo!()
+ self.id
}
fn is_dev(&self) -> bool {
- todo!()
+ self.dev
}
fn get_type(&self) -> &str {
- todo!()
+ self.r#type
+ .as_deref()
+ .filter(|s| !s.is_empty())
+ .unwrap_or("library")
}
- fn get_target_dir(&self) -> Option<&str> {
- todo!()
+ fn get_target_dir(&self) -> Option<String> {
+ Package::get_target_dir(self)
}
fn get_extra(&self) -> IndexMap<String, PhpMixed> {
- todo!()
+ self.extra.clone()
}
- fn set_installation_source(&mut self, _type: Option<String>) {
- todo!()
+ fn set_installation_source(&mut self, r#type: Option<String>) {
+ self.installation_source = r#type;
}
fn get_installation_source(&self) -> Option<&str> {
- todo!()
+ self.installation_source.as_deref()
}
fn get_source_type(&self) -> Option<&str> {
- todo!()
+ self.source_type.as_deref()
}
fn get_source_url(&self) -> Option<&str> {
- todo!()
+ self.source_url.as_deref()
}
fn get_source_urls(&self) -> Vec<String> {
- todo!()
+ Package::get_source_urls(self)
}
fn get_source_reference(&self) -> Option<&str> {
- todo!()
+ self.source_reference.as_deref()
}
- fn get_source_mirrors(&self) -> Option<Vec<IndexMap<String, PhpMixed>>> {
- todo!()
+ fn get_source_mirrors(&self) -> Option<Vec<Mirror>> {
+ self.source_mirrors.clone()
}
- fn set_source_mirrors(&mut self, _mirrors: Option<Vec<IndexMap<String, PhpMixed>>>) {
- todo!()
+ fn set_source_mirrors(&mut self, mirrors: Option<Vec<Mirror>>) {
+ self.source_mirrors = mirrors;
}
fn get_dist_type(&self) -> Option<&str> {
- todo!()
+ self.dist_type.as_deref()
}
fn get_dist_url(&self) -> Option<&str> {
- todo!()
+ self.dist_url.as_deref()
}
fn get_dist_urls(&self) -> Vec<String> {
- todo!()
+ Package::get_dist_urls(self)
}
fn get_dist_reference(&self) -> Option<&str> {
- todo!()
+ self.dist_reference.as_deref()
}
fn get_dist_sha1_checksum(&self) -> Option<&str> {
- todo!()
+ self.dist_sha1_checksum.as_deref()
}
- fn get_dist_mirrors(&self) -> Option<Vec<IndexMap<String, PhpMixed>>> {
- todo!()
+ fn get_dist_mirrors(&self) -> Option<Vec<Mirror>> {
+ self.dist_mirrors.clone()
}
- fn set_dist_mirrors(&mut self, _mirrors: Option<Vec<IndexMap<String, PhpMixed>>>) {
- todo!()
+ fn set_dist_mirrors(&mut self, mirrors: Option<Vec<Mirror>>) {
+ self.dist_mirrors = mirrors;
}
fn get_version(&self) -> &str {
- todo!()
+ &self.version
}
fn get_pretty_version(&self) -> &str {
- todo!()
+ &self.pretty_version
}
- fn get_full_pretty_version(&self, _truncate: bool, _display_mode: i64) -> String {
- todo!()
+ fn get_full_pretty_version(&self, truncate: bool, display_mode: DisplayMode) -> String {
+ BasePackage::get_full_pretty_version(self, truncate, display_mode)
}
fn get_release_date(&self) -> Option<DateTime<Utc>> {
- todo!()
+ self.release_date
}
fn get_stability(&self) -> &str {
- todo!()
+ &self.stability
}
fn get_requires(&self) -> IndexMap<String, Link> {
- todo!()
+ self.requires.clone()
}
fn get_conflicts(&self) -> IndexMap<String, Link> {
- todo!()
+ self.conflicts.clone()
}
fn get_provides(&self) -> IndexMap<String, Link> {
- todo!()
+ self.provides.clone()
}
fn get_replaces(&self) -> IndexMap<String, Link> {
- todo!()
+ self.replaces.clone()
}
fn get_dev_requires(&self) -> IndexMap<String, Link> {
- todo!()
+ self.dev_requires.clone()
}
fn get_suggests(&self) -> IndexMap<String, String> {
- todo!()
+ self.suggests.clone()
}
fn get_autoload(&self) -> IndexMap<String, PhpMixed> {
- todo!()
+ self.autoload.clone()
}
fn get_dev_autoload(&self) -> IndexMap<String, PhpMixed> {
- todo!()
+ self.dev_autoload.clone()
}
fn get_include_paths(&self) -> Vec<String> {
- todo!()
+ self.include_paths.clone()
}
fn get_php_ext(&self) -> Option<IndexMap<String, PhpMixed>> {
- todo!()
+ self.php_ext.clone()
}
fn set_repository(&mut self, repository: RepositoryInterfaceHandle) -> anyhow::Result<()> {
if let Some(existing) = self.repository.as_ref().and_then(|w| w.upgrade()) {
@@ -726,42 +743,48 @@ impl PackageInterface for Package {
.map(RepositoryInterfaceHandle::from_rc)
}
fn get_binaries(&self) -> Vec<String> {
- todo!()
+ self.binaries.clone()
}
fn get_unique_name(&self) -> String {
- todo!()
+ format!("{}-{}", self.get_name(), self.get_version())
}
fn get_notification_url(&self) -> Option<&str> {
- todo!()
+ self.notification_url.as_deref()
}
fn get_pretty_string(&self) -> String {
- todo!()
+ format!("{} {}", self.get_pretty_name(), self.get_pretty_version())
}
fn is_default_branch(&self) -> bool {
- todo!()
+ self.is_default_branch
}
fn get_transport_options(&self) -> IndexMap<String, PhpMixed> {
- todo!()
+ self.transport_options.clone()
}
- fn set_transport_options(&mut self, _options: IndexMap<String, PhpMixed>) {
- todo!()
+ fn set_transport_options(&mut self, options: IndexMap<String, PhpMixed>) {
+ self.transport_options = options;
}
- fn set_source_reference(&mut self, _reference: Option<String>) {
- todo!()
+ fn set_source_reference(&mut self, reference: Option<String>) {
+ self.source_reference = reference;
}
- fn set_source_url(&mut self, _url: Option<String>) {
- todo!()
+ fn set_source_url(&mut self, url: Option<String>) {
+ self.source_url = url;
}
- fn set_dist_url(&mut self, _url: Option<String>) {
- todo!()
+ fn set_dist_url(&mut self, url: Option<String>) {
+ self.dist_url = match url.as_deref() {
+ Some("") => None,
+ _ => url,
+ };
}
- fn set_dist_type(&mut self, _type: Option<String>) {
- todo!()
+ fn set_dist_type(&mut self, r#type: Option<String>) {
+ self.dist_type = match r#type.as_deref() {
+ Some("") => None,
+ _ => r#type,
+ };
}
- fn set_dist_reference(&mut self, _reference: Option<String>) {
- todo!()
+ fn set_dist_reference(&mut self, reference: Option<String>) {
+ self.dist_reference = reference;
}
- fn set_source_dist_references(&mut self, _reference: &str) {
- todo!()
+ fn set_source_dist_references(&mut self, reference: &str) {
+ Package::set_source_dist_references(self, reference.to_string());
}
}
diff --git a/crates/shirabe/src/package/package_interface.rs b/crates/shirabe/src/package/package_interface.rs
index 0ab2a09..285a30b 100644
--- a/crates/shirabe/src/package/package_interface.rs
+++ b/crates/shirabe/src/package/package_interface.rs
@@ -5,8 +5,21 @@ use indexmap::IndexMap;
use shirabe_php_shim::PhpMixed;
use crate::package::Link;
+use crate::package::Mirror;
use crate::repository::RepositoryInterfaceHandle;
+/// Selects how `get_full_pretty_version` renders the reference.
+///
+/// ref: PackageInterface::DISPLAY_SOURCE_REF_IF_DEV
+/// ref: PackageInterface::DISPLAY_SOURCE_REF
+/// ref: PackageInterface::DISPLAY_DIST_REF
+#[derive(Debug, Clone, Copy, PartialEq, Eq)]
+pub enum DisplayMode {
+ SourceRefIfDev,
+ SourceRef,
+ DistRef,
+}
+
/// Defines the essential information a package has that is used during solving/installation
///
/// PackageInterface & derivatives are considered internal, you may use them in type hints but extending/implementing them is not recommended and not supported. Things may change without notice.
@@ -54,7 +67,7 @@ pub trait PackageInterface: std::fmt::Display + std::fmt::Debug {
/// Returns the package targetDir property
///
/// @return ?string The package targetDir
- fn get_target_dir(&self) -> Option<&str>;
+ fn get_target_dir(&self) -> Option<String>;
/// Returns the package extra data
///
@@ -96,10 +109,10 @@ pub trait PackageInterface: std::fmt::Display + std::fmt::Debug {
/// Returns the source mirrors of this package
///
/// @return ?list<array{url: non-empty-string, preferred: bool}>
- fn get_source_mirrors(&self) -> Option<Vec<IndexMap<String, PhpMixed>>>;
+ fn get_source_mirrors(&self) -> Option<Vec<Mirror>>;
/// @param null|list<array{url: non-empty-string, preferred: bool}> $mirrors
- fn set_source_mirrors(&mut self, mirrors: Option<Vec<IndexMap<String, PhpMixed>>>);
+ fn set_source_mirrors(&mut self, mirrors: Option<Vec<Mirror>>);
/// Returns the type of the distribution archive of this version, e.g. zip, tarball
///
@@ -127,10 +140,10 @@ pub trait PackageInterface: std::fmt::Display + std::fmt::Debug {
/// Returns the dist mirrors of this package
///
/// @return ?list<array{url: non-empty-string, preferred: bool}>
- fn get_dist_mirrors(&self) -> Option<Vec<IndexMap<String, PhpMixed>>>;
+ fn get_dist_mirrors(&self) -> Option<Vec<Mirror>>;
/// @param null|list<array{url: non-empty-string, preferred: bool}> $mirrors
- fn set_dist_mirrors(&mut self, mirrors: Option<Vec<IndexMap<String, PhpMixed>>>);
+ fn set_dist_mirrors(&mut self, mirrors: Option<Vec<Mirror>>);
/// Returns the version of this package
///
@@ -149,9 +162,7 @@ pub trait PackageInterface: std::fmt::Display + std::fmt::Debug {
/// @param bool $truncate If the source reference is a sha1 hash, truncate it
/// @param int $displayMode One of the DISPLAY_ constants on this interface determining display of references
/// @return string version
- ///
- /// @phpstan-param self::DISPLAY_SOURCE_REF_IF_DEV|self::DISPLAY_SOURCE_REF|self::DISPLAY_DIST_REF $displayMode
- fn get_full_pretty_version(&self, truncate: bool, display_mode: i64) -> String;
+ fn get_full_pretty_version(&self, truncate: bool, display_mode: DisplayMode) -> String;
/// Returns the release date of the package
fn get_release_date(&self) -> Option<DateTime<Utc>>;
@@ -308,9 +319,3 @@ pub trait PackageInterface: std::fmt::Display + std::fmt::Debug {
None
}
}
-
-impl dyn PackageInterface {
- pub const DISPLAY_SOURCE_REF_IF_DEV: i64 = 0;
- pub const DISPLAY_SOURCE_REF: i64 = 1;
- pub const DISPLAY_DIST_REF: i64 = 2;
-}
diff --git a/crates/shirabe/src/package/root_alias_package.rs b/crates/shirabe/src/package/root_alias_package.rs
index 67e123b..de4733a 100644
--- a/crates/shirabe/src/package/root_alias_package.rs
+++ b/crates/shirabe/src/package/root_alias_package.rs
@@ -82,11 +82,11 @@ impl RootPackageInterface for RootAliasPackage {
todo!("RootAliasPackage::get_config cannot return a borrow across the aliasOf handle")
}
- fn set_requires(&mut self, requires: Vec<Link>) {
- let replaced = self
- .inner
- .inner
- .replace_self_version_dependencies(requires.clone(), Link::TYPE_REQUIRE);
+ fn set_requires(&mut self, requires: IndexMap<String, Link>) {
+ let replaced = self.inner.inner.replace_self_version_dependencies(
+ requires.values().cloned().collect(),
+ Link::TYPE_REQUIRE,
+ );
self.inner.inner.requires = replaced
.into_iter()
.map(|l| (l.get_target().to_string(), l))
@@ -94,19 +94,19 @@ impl RootPackageInterface for RootAliasPackage {
self.alias_of.set_requires(requires);
}
- fn set_dev_requires(&mut self, dev_requires: Vec<Link>) {
+ fn set_dev_requires(&mut self, dev_requires: IndexMap<String, Link>) {
self.alias_of.set_dev_requires(dev_requires);
}
- fn set_conflicts(&mut self, conflicts: Vec<Link>) {
+ fn set_conflicts(&mut self, conflicts: IndexMap<String, Link>) {
self.alias_of.set_conflicts(conflicts);
}
- fn set_provides(&mut self, provides: Vec<Link>) {
+ fn set_provides(&mut self, provides: IndexMap<String, Link>) {
self.alias_of.set_provides(provides);
}
- fn set_replaces(&mut self, replaces: Vec<Link>) {
+ fn set_replaces(&mut self, replaces: IndexMap<String, Link>) {
self.alias_of.set_replaces(replaces);
}
diff --git a/crates/shirabe/src/package/root_package.rs b/crates/shirabe/src/package/root_package.rs
index 9cedc1a..c599612 100644
--- a/crates/shirabe/src/package/root_package.rs
+++ b/crates/shirabe/src/package/root_package.rs
@@ -6,7 +6,9 @@ use shirabe_php_shim::PhpMixed;
use crate::package::CompletePackage;
use crate::package::CompletePackageInterface;
+use crate::package::DisplayMode;
use crate::package::Link;
+use crate::package::Mirror;
use crate::package::PackageInterface;
use crate::package::RootPackageInterface;
use crate::repository::RepositoryInterfaceHandle;
@@ -88,268 +90,268 @@ impl RootPackageInterface for RootPackage {
&self.aliases
}
- fn set_requires(&mut self, requires: Vec<super::Link>) {
- todo!()
+ fn set_requires(&mut self, requires: IndexMap<String, Link>) {
+ self.inner.inner.set_requires(requires);
}
- fn set_dev_requires(&mut self, dev_requires: Vec<super::Link>) {
- todo!()
+ fn set_dev_requires(&mut self, dev_requires: IndexMap<String, Link>) {
+ self.inner.inner.set_dev_requires(dev_requires);
}
- fn set_conflicts(&mut self, conflicts: Vec<super::Link>) {
- todo!()
+ fn set_conflicts(&mut self, conflicts: IndexMap<String, Link>) {
+ self.inner.inner.set_conflicts(conflicts);
}
- fn set_provides(&mut self, provides: Vec<super::Link>) {
- todo!()
+ fn set_provides(&mut self, provides: IndexMap<String, Link>) {
+ self.inner.inner.set_provides(provides);
}
- fn set_replaces(&mut self, replaces: Vec<super::Link>) {
- todo!()
+ fn set_replaces(&mut self, replaces: IndexMap<String, Link>) {
+ self.inner.inner.set_replaces(replaces);
}
fn set_autoload(&mut self, autoload: IndexMap<String, PhpMixed>) {
- todo!()
+ self.inner.inner.set_autoload(autoload);
}
fn set_dev_autoload(&mut self, dev_autoload: IndexMap<String, PhpMixed>) {
- todo!()
+ self.inner.inner.set_dev_autoload(dev_autoload);
}
fn set_suggests(&mut self, suggests: IndexMap<String, String>) {
- todo!()
+ self.inner.inner.set_suggests(suggests);
}
fn set_extra(&mut self, extra: IndexMap<String, PhpMixed>) {
- todo!()
+ self.inner.inner.set_extra(extra);
}
}
impl CompletePackageInterface for RootPackage {
fn get_scripts(&self) -> IndexMap<String, Vec<String>> {
- todo!()
+ CompletePackageInterface::get_scripts(&self.inner)
}
fn set_scripts(&mut self, scripts: IndexMap<String, Vec<String>>) {
- todo!()
+ CompletePackageInterface::set_scripts(&mut self.inner, scripts)
}
fn get_repositories(&self) -> Vec<IndexMap<String, PhpMixed>> {
- todo!()
+ CompletePackageInterface::get_repositories(&self.inner)
}
fn set_repositories(&mut self, repositories: Vec<IndexMap<String, PhpMixed>>) {
- todo!()
+ CompletePackageInterface::set_repositories(&mut self.inner, repositories)
}
fn get_license(&self) -> Vec<String> {
- todo!()
+ CompletePackageInterface::get_license(&self.inner)
}
fn set_license(&mut self, license: Vec<String>) {
- todo!()
+ CompletePackageInterface::set_license(&mut self.inner, license)
}
fn get_keywords(&self) -> Vec<String> {
- todo!()
+ CompletePackageInterface::get_keywords(&self.inner)
}
fn set_keywords(&mut self, keywords: Vec<String>) {
- todo!()
+ CompletePackageInterface::set_keywords(&mut self.inner, keywords)
}
fn get_description(&self) -> Option<&str> {
- todo!()
+ CompletePackageInterface::get_description(&self.inner)
}
fn set_description(&mut self, description: String) {
- todo!()
+ CompletePackageInterface::set_description(&mut self.inner, description)
}
fn get_homepage(&self) -> Option<&str> {
- todo!()
+ CompletePackageInterface::get_homepage(&self.inner)
}
fn set_homepage(&mut self, homepage: String) {
- todo!()
+ CompletePackageInterface::set_homepage(&mut self.inner, homepage)
}
fn get_authors(&self) -> Vec<IndexMap<String, String>> {
- todo!()
+ CompletePackageInterface::get_authors(&self.inner)
}
fn set_authors(&mut self, authors: Vec<IndexMap<String, String>>) {
- todo!()
+ CompletePackageInterface::set_authors(&mut self.inner, authors)
}
fn get_support(&self) -> IndexMap<String, String> {
- todo!()
+ CompletePackageInterface::get_support(&self.inner)
}
fn set_support(&mut self, support: IndexMap<String, String>) {
- todo!()
+ CompletePackageInterface::set_support(&mut self.inner, support)
}
fn get_funding(&self) -> Vec<IndexMap<String, PhpMixed>> {
- todo!()
+ CompletePackageInterface::get_funding(&self.inner)
}
fn set_funding(&mut self, funding: Vec<IndexMap<String, PhpMixed>>) {
- todo!()
+ CompletePackageInterface::set_funding(&mut self.inner, funding)
}
fn is_abandoned(&self) -> bool {
- todo!()
+ CompletePackageInterface::is_abandoned(&self.inner)
}
fn get_replacement_package(&self) -> Option<&str> {
- todo!()
+ CompletePackageInterface::get_replacement_package(&self.inner)
}
fn set_abandoned(&mut self, abandoned: PhpMixed) {
- todo!()
+ CompletePackageInterface::set_abandoned(&mut self.inner, abandoned)
}
fn get_archive_name(&self) -> Option<&str> {
- todo!()
+ CompletePackageInterface::get_archive_name(&self.inner)
}
fn set_archive_name(&mut self, name: String) {
- todo!()
+ CompletePackageInterface::set_archive_name(&mut self.inner, name)
}
fn get_archive_excludes(&self) -> Vec<String> {
- todo!()
+ CompletePackageInterface::get_archive_excludes(&self.inner)
}
fn set_archive_excludes(&mut self, excludes: Vec<String>) {
- todo!()
+ CompletePackageInterface::set_archive_excludes(&mut self.inner, excludes)
}
}
impl std::fmt::Display for RootPackage {
- fn fmt(&self, _f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
- todo!()
+ fn fmt(&self, f: &mut std::fmt::Formatter<'_>) -> std::fmt::Result {
+ write!(f, "{}", self.get_unique_name())
}
}
impl PackageInterface for RootPackage {
fn get_name(&self) -> &str {
- todo!()
+ self.inner.get_name()
}
fn get_pretty_name(&self) -> &str {
- todo!()
+ self.inner.get_pretty_name()
}
- fn get_names(&self, _provides: bool) -> Vec<String> {
- todo!()
+ fn get_names(&self, provides: bool) -> Vec<String> {
+ self.inner.get_names(provides)
}
- fn set_id(&mut self, _id: i64) {
- todo!()
+ fn set_id(&mut self, id: i64) {
+ self.inner.set_id(id);
}
fn get_id(&self) -> i64 {
- todo!()
+ self.inner.get_id()
}
fn is_dev(&self) -> bool {
- todo!()
+ self.inner.is_dev()
}
fn get_type(&self) -> &str {
- todo!()
+ self.inner.get_type()
}
- fn get_target_dir(&self) -> Option<&str> {
- todo!()
+ fn get_target_dir(&self) -> Option<String> {
+ self.inner.get_target_dir()
}
fn get_extra(&self) -> IndexMap<String, PhpMixed> {
- todo!()
+ self.inner.get_extra()
}
- fn set_installation_source(&mut self, _type: Option<String>) {
- todo!()
+ fn set_installation_source(&mut self, r#type: Option<String>) {
+ self.inner.set_installation_source(r#type);
}
fn get_installation_source(&self) -> Option<&str> {
- todo!()
+ self.inner.get_installation_source()
}
fn get_source_type(&self) -> Option<&str> {
- todo!()
+ self.inner.get_source_type()
}
fn get_source_url(&self) -> Option<&str> {
- todo!()
+ self.inner.get_source_url()
}
fn get_source_urls(&self) -> Vec<String> {
- todo!()
+ self.inner.get_source_urls()
}
fn get_source_reference(&self) -> Option<&str> {
- todo!()
+ self.inner.get_source_reference()
}
- fn get_source_mirrors(&self) -> Option<Vec<IndexMap<String, PhpMixed>>> {
- todo!()
+ fn get_source_mirrors(&self) -> Option<Vec<Mirror>> {
+ self.inner.get_source_mirrors()
}
- fn set_source_mirrors(&mut self, _mirrors: Option<Vec<IndexMap<String, PhpMixed>>>) {
- todo!()
+ fn set_source_mirrors(&mut self, mirrors: Option<Vec<Mirror>>) {
+ self.inner.set_source_mirrors(mirrors);
}
fn get_dist_type(&self) -> Option<&str> {
- todo!()
+ self.inner.get_dist_type()
}
fn get_dist_url(&self) -> Option<&str> {
- todo!()
+ self.inner.get_dist_url()
}
fn get_dist_urls(&self) -> Vec<String> {
- todo!()
+ self.inner.get_dist_urls()
}
fn get_dist_reference(&self) -> Option<&str> {
- todo!()
+ self.inner.get_dist_reference()
}
fn get_dist_sha1_checksum(&self) -> Option<&str> {
- todo!()
+ self.inner.get_dist_sha1_checksum()
}
- fn get_dist_mirrors(&self) -> Option<Vec<IndexMap<String, PhpMixed>>> {
- todo!()
+ fn get_dist_mirrors(&self) -> Option<Vec<Mirror>> {
+ self.inner.get_dist_mirrors()
}
- fn set_dist_mirrors(&mut self, _mirrors: Option<Vec<IndexMap<String, PhpMixed>>>) {
- todo!()
+ fn set_dist_mirrors(&mut self, mirrors: Option<Vec<Mirror>>) {
+ self.inner.set_dist_mirrors(mirrors);
}
fn get_version(&self) -> &str {
- todo!()
+ self.inner.get_version()
}
fn get_pretty_version(&self) -> &str {
- todo!()
+ self.inner.get_pretty_version()
}
- fn get_full_pretty_version(&self, _truncate: bool, _display_mode: i64) -> String {
- todo!()
+ fn get_full_pretty_version(&self, truncate: bool, display_mode: DisplayMode) -> String {
+ self.inner.get_full_pretty_version(truncate, display_mode)
}
fn get_release_date(&self) -> Option<DateTime<Utc>> {
- todo!()
+ self.inner.get_release_date()
}
fn get_stability(&self) -> &str {
- todo!()
+ self.inner.get_stability()
}
fn get_requires(&self) -> IndexMap<String, Link> {
- todo!()
+ self.inner.get_requires()
}
fn get_conflicts(&self) -> IndexMap<String, Link> {
- todo!()
+ self.inner.get_conflicts()
}
fn get_provides(&self) -> IndexMap<String, Link> {
- todo!()
+ self.inner.get_provides()
}
fn get_replaces(&self) -> IndexMap<String, Link> {
- todo!()
+ self.inner.get_replaces()
}
fn get_dev_requires(&self) -> IndexMap<String, Link> {
- todo!()
+ self.inner.get_dev_requires()
}
fn get_suggests(&self) -> IndexMap<String, String> {
- todo!()
+ self.inner.get_suggests()
}
fn get_autoload(&self) -> IndexMap<String, PhpMixed> {
- todo!()
+ self.inner.get_autoload()
}
fn get_dev_autoload(&self) -> IndexMap<String, PhpMixed> {
- todo!()
+ self.inner.get_dev_autoload()
}
fn get_include_paths(&self) -> Vec<String> {
- todo!()
+ self.inner.get_include_paths()
}
fn get_php_ext(&self) -> Option<IndexMap<String, PhpMixed>> {
- todo!()
+ self.inner.get_php_ext()
}
fn set_repository(&mut self, repository: RepositoryInterfaceHandle) -> anyhow::Result<()> {
self.inner.set_repository(repository)
@@ -358,42 +360,42 @@ impl PackageInterface for RootPackage {
self.inner.get_repository()
}
fn get_binaries(&self) -> Vec<String> {
- todo!()
+ self.inner.get_binaries()
}
fn get_unique_name(&self) -> String {
- todo!()
+ self.inner.get_unique_name()
}
fn get_notification_url(&self) -> Option<&str> {
- todo!()
+ self.inner.get_notification_url()
}
fn get_pretty_string(&self) -> String {
- todo!()
+ self.inner.get_pretty_string()
}
fn is_default_branch(&self) -> bool {
- todo!()
+ self.inner.is_default_branch()
}
fn get_transport_options(&self) -> IndexMap<String, PhpMixed> {
- todo!()
+ self.inner.get_transport_options()
}
- fn set_transport_options(&mut self, _options: IndexMap<String, PhpMixed>) {
- todo!()
+ fn set_transport_options(&mut self, options: IndexMap<String, PhpMixed>) {
+ self.inner.set_transport_options(options);
}
- fn set_source_reference(&mut self, _reference: Option<String>) {
- todo!()
+ fn set_source_reference(&mut self, reference: Option<String>) {
+ self.inner.set_source_reference(reference);
}
- fn set_source_url(&mut self, _url: Option<String>) {
- todo!()
+ fn set_source_url(&mut self, url: Option<String>) {
+ self.inner.set_source_url(url);
}
- fn set_dist_url(&mut self, _url: Option<String>) {
- todo!()
+ fn set_dist_url(&mut self, url: Option<String>) {
+ self.inner.set_dist_url(url);
}
- fn set_dist_type(&mut self, _type: Option<String>) {
- todo!()
+ fn set_dist_type(&mut self, r#type: Option<String>) {
+ self.inner.set_dist_type(r#type);
}
- fn set_dist_reference(&mut self, _reference: Option<String>) {
- todo!()
+ fn set_dist_reference(&mut self, reference: Option<String>) {
+ self.inner.set_dist_reference(reference);
}
- fn set_source_dist_references(&mut self, _reference: &str) {
- todo!()
+ fn set_source_dist_references(&mut self, reference: &str) {
+ self.inner.set_source_dist_references(reference);
}
}
diff --git a/crates/shirabe/src/package/root_package_interface.rs b/crates/shirabe/src/package/root_package_interface.rs
index 5f47232..aa2534a 100644
--- a/crates/shirabe/src/package/root_package_interface.rs
+++ b/crates/shirabe/src/package/root_package_interface.rs
@@ -21,15 +21,15 @@ pub trait RootPackageInterface: CompletePackageInterface {
fn get_config(&self) -> &IndexMap<String, PhpMixed>;
- fn set_requires(&mut self, requires: Vec<Link>);
+ fn set_requires(&mut self, requires: IndexMap<String, Link>);
- fn set_dev_requires(&mut self, dev_requires: Vec<Link>);
+ fn set_dev_requires(&mut self, dev_requires: IndexMap<String, Link>);
- fn set_conflicts(&mut self, conflicts: Vec<Link>);
+ fn set_conflicts(&mut self, conflicts: IndexMap<String, Link>);
- fn set_provides(&mut self, provides: Vec<Link>);
+ fn set_provides(&mut self, provides: IndexMap<String, Link>);
- fn set_replaces(&mut self, replaces: Vec<Link>);
+ fn set_replaces(&mut self, replaces: IndexMap<String, Link>);
fn set_autoload(&mut self, autoload: IndexMap<String, PhpMixed>);