aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/shirabe/src/downloader/svn_downloader.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/shirabe/src/downloader/svn_downloader.rs')
-rw-r--r--crates/shirabe/src/downloader/svn_downloader.rs65
1 files changed, 34 insertions, 31 deletions
diff --git a/crates/shirabe/src/downloader/svn_downloader.rs b/crates/shirabe/src/downloader/svn_downloader.rs
index f3683dd..9f5d2ed 100644
--- a/crates/shirabe/src/downloader/svn_downloader.rs
+++ b/crates/shirabe/src/downloader/svn_downloader.rs
@@ -10,7 +10,7 @@ use crate::downloader::DownloaderInterface;
use crate::downloader::VcsDownloaderBase;
use crate::io::IOInterface;
use crate::io::IOInterfaceImmutable;
-use crate::package::PackageInterface;
+use crate::package::PackageInterfaceHandle;
use crate::repository::VcsRepository;
use crate::util::Filesystem;
use crate::util::ProcessExecutor;
@@ -37,10 +37,10 @@ impl SvnDownloader {
pub(crate) async fn do_download(
&mut self,
- package: &dyn PackageInterface,
+ package: PackageInterfaceHandle,
path: &str,
url: &str,
- prev_package: Option<&dyn PackageInterface>,
+ prev_package: Option<PackageInterfaceHandle>,
) -> anyhow::Result<Option<PhpMixed>> {
SvnUtil::clean_env();
let mut util = SvnUtil::new(
@@ -62,23 +62,26 @@ impl SvnDownloader {
pub(crate) async fn do_install(
&mut self,
- package: &dyn PackageInterface,
+ package: PackageInterfaceHandle,
path: &str,
url: &str,
) -> anyhow::Result<Option<PhpMixed>> {
SvnUtil::clean_env();
let r#ref = package.get_source_reference();
- let repo = package.get_repository();
- if let Some(repo) = repo {
- if let Some(vcs_repo) = repo.as_any().downcast_ref::<VcsRepository>() {
- let repo_config = vcs_repo.get_repo_config();
- if repo_config.contains_key("svn-cache-credentials") {
- if let Some(val) = repo_config
- .get("svn-cache-credentials")
- .and_then(|v| v.as_bool())
- {
- self.cache_credentials = val;
+ {
+ let package_ref = package.as_rc().borrow();
+ let repo = package_ref.as_package_interface().get_repository();
+ if let Some(repo) = repo {
+ if let Some(vcs_repo) = repo.as_any().downcast_ref::<VcsRepository>() {
+ let repo_config = vcs_repo.get_repo_config();
+ if repo_config.contains_key("svn-cache-credentials") {
+ if let Some(val) = repo_config
+ .get("svn-cache-credentials")
+ .and_then(|v| v.as_bool())
+ {
+ self.cache_credentials = val;
+ }
}
}
}
@@ -106,8 +109,8 @@ impl SvnDownloader {
pub(crate) async fn do_update(
&mut self,
- initial: &dyn PackageInterface,
- target: &dyn PackageInterface,
+ initial: PackageInterfaceHandle,
+ target: PackageInterfaceHandle,
path: &str,
url: &str,
) -> anyhow::Result<Option<PhpMixed>> {
@@ -137,7 +140,7 @@ impl SvnDownloader {
}
self.inner.io.write_error3(
- &format!(" Checking out {}", r#ref.unwrap_or_default()),
+ &format!(" Checking out {}", r#ref.clone().unwrap_or_default()),
true,
io_interface::NORMAL,
);
@@ -155,7 +158,7 @@ impl SvnDownloader {
Ok(None)
}
- pub fn get_local_changes(&self, package: &dyn PackageInterface, path: &str) -> Option<String> {
+ pub fn get_local_changes(&self, package: PackageInterfaceHandle, path: &str) -> Option<String> {
if !self.has_metadata_repository(path) {
return None;
}
@@ -178,7 +181,7 @@ impl SvnDownloader {
pub(crate) fn execute(
&self,
- package: &dyn PackageInterface,
+ package: PackageInterfaceHandle,
base_url: &str,
command: Vec<String>,
url: &str,
@@ -204,11 +207,11 @@ impl SvnDownloader {
pub(crate) async fn clean_changes(
&mut self,
- package: &dyn PackageInterface,
+ package: PackageInterfaceHandle,
path: &str,
update: bool,
) -> anyhow::Result<Option<PhpMixed>> {
- let changes = self.get_local_changes(package, path);
+ let changes = self.get_local_changes(package.clone(), path);
if changes.is_none() {
return Ok(None);
}
@@ -440,9 +443,9 @@ impl DownloaderInterface for SvnDownloader {
async fn download(
&self,
- _package: &dyn PackageInterface,
+ _package: PackageInterfaceHandle,
_path: &str,
- _prev_package: Option<&dyn PackageInterface>,
+ _prev_package: Option<PackageInterfaceHandle>,
_output: bool,
) -> anyhow::Result<Option<PhpMixed>> {
todo!()
@@ -451,16 +454,16 @@ impl DownloaderInterface for SvnDownloader {
async fn prepare(
&self,
_type: &str,
- _package: &dyn PackageInterface,
+ _package: PackageInterfaceHandle,
_path: &str,
- _prev_package: Option<&dyn PackageInterface>,
+ _prev_package: Option<PackageInterfaceHandle>,
) -> anyhow::Result<Option<PhpMixed>> {
todo!()
}
async fn install(
&self,
- _package: &dyn PackageInterface,
+ _package: PackageInterfaceHandle,
_path: &str,
_output: bool,
) -> anyhow::Result<Option<PhpMixed>> {
@@ -469,8 +472,8 @@ impl DownloaderInterface for SvnDownloader {
async fn update(
&self,
- _initial: &dyn PackageInterface,
- _target: &dyn PackageInterface,
+ _initial: PackageInterfaceHandle,
+ _target: PackageInterfaceHandle,
_path: &str,
) -> anyhow::Result<Option<PhpMixed>> {
todo!()
@@ -478,7 +481,7 @@ impl DownloaderInterface for SvnDownloader {
async fn remove(
&self,
- _package: &dyn PackageInterface,
+ _package: PackageInterfaceHandle,
_path: &str,
_output: bool,
) -> anyhow::Result<Option<PhpMixed>> {
@@ -488,9 +491,9 @@ impl DownloaderInterface for SvnDownloader {
async fn cleanup(
&self,
_type: &str,
- _package: &dyn PackageInterface,
+ _package: PackageInterfaceHandle,
_path: &str,
- _prev_package: Option<&dyn PackageInterface>,
+ _prev_package: Option<PackageInterfaceHandle>,
) -> anyhow::Result<Option<PhpMixed>> {
todo!()
}