aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/shirabe/src/downloader
diff options
context:
space:
mode:
Diffstat (limited to 'crates/shirabe/src/downloader')
-rw-r--r--crates/shirabe/src/downloader/fossil_downloader.rs4
-rw-r--r--crates/shirabe/src/downloader/git_downloader.rs6
-rw-r--r--crates/shirabe/src/downloader/gzip_downloader.rs5
-rw-r--r--crates/shirabe/src/downloader/hg_downloader.rs4
-rw-r--r--crates/shirabe/src/downloader/perforce_downloader.rs4
-rw-r--r--crates/shirabe/src/downloader/phar_downloader.rs5
-rw-r--r--crates/shirabe/src/downloader/rar_downloader.rs5
-rw-r--r--crates/shirabe/src/downloader/svn_downloader.rs4
-rw-r--r--crates/shirabe/src/downloader/tar_downloader.rs5
-rw-r--r--crates/shirabe/src/downloader/vcs_downloader.rs28
-rw-r--r--crates/shirabe/src/downloader/xz_downloader.rs5
-rw-r--r--crates/shirabe/src/downloader/zip_downloader.rs3
12 files changed, 61 insertions, 17 deletions
diff --git a/crates/shirabe/src/downloader/fossil_downloader.rs b/crates/shirabe/src/downloader/fossil_downloader.rs
index a686177..5314e10 100644
--- a/crates/shirabe/src/downloader/fossil_downloader.rs
+++ b/crates/shirabe/src/downloader/fossil_downloader.rs
@@ -1,6 +1,6 @@
//! ref: composer/src/Composer/Downloader/FossilDownloader.php
-use crate::downloader::vcs_downloader::VcsDownloader;
+use crate::downloader::vcs_downloader::VcsDownloaderBase;
use crate::package::package_interface::PackageInterface;
use anyhow::Result;
use shirabe_external_packages::composer::pcre::preg::Preg;
@@ -9,7 +9,7 @@ use shirabe_php_shim::RuntimeException;
#[derive(Debug)]
pub struct FossilDownloader {
- inner: VcsDownloader,
+ inner: VcsDownloaderBase,
}
impl FossilDownloader {
diff --git a/crates/shirabe/src/downloader/git_downloader.rs b/crates/shirabe/src/downloader/git_downloader.rs
index 97d0ee9..1bc0ff1 100644
--- a/crates/shirabe/src/downloader/git_downloader.rs
+++ b/crates/shirabe/src/downloader/git_downloader.rs
@@ -13,7 +13,7 @@ use shirabe_php_shim::{
use crate::cache::Cache;
use crate::config::Config;
use crate::downloader::dvcs_downloader_interface::DvcsDownloaderInterface;
-use crate::downloader::vcs_downloader::VcsDownloader;
+use crate::downloader::vcs_downloader::VcsDownloaderBase;
use crate::io::io_interface::IOInterface;
use crate::package::package_interface::PackageInterface;
use crate::util::filesystem::Filesystem;
@@ -24,7 +24,7 @@ use crate::util::url::Url;
#[derive(Debug)]
pub struct GitDownloader {
- inner: VcsDownloader,
+ inner: VcsDownloaderBase,
/// @var array<string, bool>
has_stashed_changes: IndexMap<String, bool>,
/// @var array<string, bool>
@@ -41,7 +41,7 @@ impl GitDownloader {
process: Option<ProcessExecutor>,
fs: Option<Filesystem>,
) -> Self {
- let inner = VcsDownloader::new(io, config, process, fs);
+ let inner = VcsDownloaderBase::new(io, config, process, fs);
let git_util = GitUtil::new(&*inner.io, &inner.config, &inner.process, &inner.filesystem);
Self {
inner,
diff --git a/crates/shirabe/src/downloader/gzip_downloader.rs b/crates/shirabe/src/downloader/gzip_downloader.rs
index 81fdbed..ca50827 100644
--- a/crates/shirabe/src/downloader/gzip_downloader.rs
+++ b/crates/shirabe/src/downloader/gzip_downloader.rs
@@ -1,9 +1,11 @@
//! ref: composer/src/Composer/Downloader/GzipDownloader.php
use crate::downloader::archive_downloader::ArchiveDownloader;
+use crate::downloader::file_downloader::FileDownloader;
use crate::package::package_interface::PackageInterface;
use crate::util::platform::Platform;
use anyhow::Result;
+use indexmap::IndexMap;
use shirabe_external_packages::react::promise::promise_interface::PromiseInterface;
use shirabe_php_shim::{
DIRECTORY_SEPARATOR, PATHINFO_FILENAME, PHP_URL_PATH, RuntimeException, extension_loaded,
@@ -11,7 +13,8 @@ use shirabe_php_shim::{
};
pub struct GzipDownloader {
- inner: ArchiveDownloader,
+ inner: FileDownloader,
+ cleanup_executed: IndexMap<String, bool>,
}
impl GzipDownloader {
diff --git a/crates/shirabe/src/downloader/hg_downloader.rs b/crates/shirabe/src/downloader/hg_downloader.rs
index ff06806..1b4204f 100644
--- a/crates/shirabe/src/downloader/hg_downloader.rs
+++ b/crates/shirabe/src/downloader/hg_downloader.rs
@@ -1,6 +1,6 @@
//! ref: composer/src/Composer/Downloader/HgDownloader.php
-use crate::downloader::vcs_downloader::VcsDownloader;
+use crate::downloader::vcs_downloader::VcsDownloaderBase;
use crate::package::package_interface::PackageInterface;
use crate::util::hg::Hg as HgUtils;
use anyhow::Result;
@@ -9,7 +9,7 @@ use shirabe_php_shim::RuntimeException;
#[derive(Debug)]
pub struct HgDownloader {
- inner: VcsDownloader,
+ inner: VcsDownloaderBase,
}
impl HgDownloader {
diff --git a/crates/shirabe/src/downloader/perforce_downloader.rs b/crates/shirabe/src/downloader/perforce_downloader.rs
index 8674b3d..b10e27f 100644
--- a/crates/shirabe/src/downloader/perforce_downloader.rs
+++ b/crates/shirabe/src/downloader/perforce_downloader.rs
@@ -1,6 +1,6 @@
//! ref: composer/src/Composer/Downloader/PerforceDownloader.php
-use crate::downloader::vcs_downloader::VcsDownloader;
+use crate::downloader::vcs_downloader::VcsDownloaderBase;
use crate::package::package_interface::PackageInterface;
use crate::repository::vcs_repository::VcsRepository;
use crate::util::perforce::Perforce;
@@ -12,7 +12,7 @@ use std::any::Any;
#[derive(Debug)]
pub struct PerforceDownloader {
- inner: VcsDownloader,
+ inner: VcsDownloaderBase,
pub(crate) perforce: Option<Perforce>,
}
diff --git a/crates/shirabe/src/downloader/phar_downloader.rs b/crates/shirabe/src/downloader/phar_downloader.rs
index 8fea679..5316fc1 100644
--- a/crates/shirabe/src/downloader/phar_downloader.rs
+++ b/crates/shirabe/src/downloader/phar_downloader.rs
@@ -1,14 +1,17 @@
//! ref: composer/src/Composer/Downloader/PharDownloader.php
use crate::downloader::archive_downloader::ArchiveDownloader;
+use crate::downloader::file_downloader::FileDownloader;
use crate::package::package_interface::PackageInterface;
use anyhow::Result;
+use indexmap::IndexMap;
use shirabe_external_packages::react::promise::promise_interface::PromiseInterface;
use shirabe_php_shim::Phar;
#[derive(Debug)]
pub struct PharDownloader {
- inner: ArchiveDownloader,
+ inner: FileDownloader,
+ cleanup_executed: IndexMap<String, bool>,
}
impl PharDownloader {
diff --git a/crates/shirabe/src/downloader/rar_downloader.rs b/crates/shirabe/src/downloader/rar_downloader.rs
index 1b4767f..308b6fa 100644
--- a/crates/shirabe/src/downloader/rar_downloader.rs
+++ b/crates/shirabe/src/downloader/rar_downloader.rs
@@ -1,17 +1,20 @@
//! ref: composer/src/Composer/Downloader/RarDownloader.php
use crate::downloader::archive_downloader::ArchiveDownloader;
+use crate::downloader::file_downloader::FileDownloader;
use crate::package::package_interface::PackageInterface;
use crate::util::ini_helper::IniHelper;
use crate::util::platform::Platform;
use anyhow::Result;
+use indexmap::IndexMap;
use shirabe_external_packages::react::promise::promise_interface::PromiseInterface;
use shirabe_php_shim::{
RarArchive, RuntimeException, UnexpectedValueException, class_exists, implode,
};
pub struct RarDownloader {
- inner: ArchiveDownloader,
+ inner: FileDownloader,
+ cleanup_executed: IndexMap<String, bool>,
}
impl RarDownloader {
diff --git a/crates/shirabe/src/downloader/svn_downloader.rs b/crates/shirabe/src/downloader/svn_downloader.rs
index 30a64f2..ef006f3 100644
--- a/crates/shirabe/src/downloader/svn_downloader.rs
+++ b/crates/shirabe/src/downloader/svn_downloader.rs
@@ -5,7 +5,7 @@ use shirabe_external_packages::react::promise;
use shirabe_external_packages::react::promise::promise_interface::PromiseInterface;
use shirabe_php_shim::{PhpMixed, RuntimeException, is_dir, version_compare};
-use crate::downloader::vcs_downloader::VcsDownloader;
+use crate::downloader::vcs_downloader::VcsDownloaderBase;
use crate::io::io_interface::IOInterface;
use crate::package::package_interface::PackageInterface;
use crate::repository::vcs_repository::VcsRepository;
@@ -13,7 +13,7 @@ use crate::util::svn::Svn as SvnUtil;
#[derive(Debug)]
pub struct SvnDownloader {
- inner: VcsDownloader,
+ inner: VcsDownloaderBase,
pub(crate) cache_credentials: bool,
}
diff --git a/crates/shirabe/src/downloader/tar_downloader.rs b/crates/shirabe/src/downloader/tar_downloader.rs
index c327ca0..d8531e0 100644
--- a/crates/shirabe/src/downloader/tar_downloader.rs
+++ b/crates/shirabe/src/downloader/tar_downloader.rs
@@ -1,14 +1,17 @@
//! ref: composer/src/Composer/Downloader/TarDownloader.php
use crate::downloader::archive_downloader::ArchiveDownloader;
+use crate::downloader::file_downloader::FileDownloader;
use crate::package::package_interface::PackageInterface;
use anyhow::Result;
+use indexmap::IndexMap;
use shirabe_external_packages::react::promise::promise_interface::PromiseInterface;
use shirabe_php_shim::PharData;
#[derive(Debug)]
pub struct TarDownloader {
- inner: ArchiveDownloader,
+ inner: FileDownloader,
+ cleanup_executed: IndexMap<String, bool>,
}
impl TarDownloader {
diff --git a/crates/shirabe/src/downloader/vcs_downloader.rs b/crates/shirabe/src/downloader/vcs_downloader.rs
index b76c242..9ec86ff 100644
--- a/crates/shirabe/src/downloader/vcs_downloader.rs
+++ b/crates/shirabe/src/downloader/vcs_downloader.rs
@@ -23,6 +23,34 @@ use crate::package::version::version_parser::VersionParser;
use crate::util::filesystem::Filesystem;
use crate::util::process_executor::ProcessExecutor;
+#[derive(Debug)]
+pub struct VcsDownloaderBase {
+ pub io: Box<dyn IOInterface>,
+ pub config: Config,
+ pub process: ProcessExecutor,
+ pub filesystem: Filesystem,
+ pub has_cleaned_changes: IndexMap<String, bool>,
+}
+
+impl VcsDownloaderBase {
+ pub fn new(
+ io: Box<dyn IOInterface>,
+ config: Config,
+ process: Option<ProcessExecutor>,
+ fs: Option<Filesystem>,
+ ) -> Self {
+ let process = process.unwrap_or_else(|| ProcessExecutor::new(None, None));
+ let filesystem = fs.unwrap_or_else(|| Filesystem::new(None));
+ Self {
+ io,
+ config,
+ process,
+ filesystem,
+ has_cleaned_changes: IndexMap::new(),
+ }
+ }
+}
+
pub trait VcsDownloader:
DownloaderInterface + ChangeReportInterface + VcsCapableDownloaderInterface
{
diff --git a/crates/shirabe/src/downloader/xz_downloader.rs b/crates/shirabe/src/downloader/xz_downloader.rs
index 0c5d876..1ad0bb1 100644
--- a/crates/shirabe/src/downloader/xz_downloader.rs
+++ b/crates/shirabe/src/downloader/xz_downloader.rs
@@ -1,13 +1,16 @@
//! ref: composer/src/Composer/Downloader/XzDownloader.php
use crate::downloader::archive_downloader::ArchiveDownloader;
+use crate::downloader::file_downloader::FileDownloader;
use crate::package::package_interface::PackageInterface;
use anyhow::{Result, bail};
+use indexmap::IndexMap;
use shirabe_external_packages::react::promise::promise_interface::PromiseInterface;
#[derive(Debug)]
pub struct XzDownloader {
- inner: ArchiveDownloader,
+ inner: FileDownloader,
+ cleanup_executed: IndexMap<String, bool>,
}
impl XzDownloader {
diff --git a/crates/shirabe/src/downloader/zip_downloader.rs b/crates/shirabe/src/downloader/zip_downloader.rs
index ecb7821..90e5639 100644
--- a/crates/shirabe/src/downloader/zip_downloader.rs
+++ b/crates/shirabe/src/downloader/zip_downloader.rs
@@ -24,7 +24,8 @@ static IS_WINDOWS: Mutex<Option<bool>> = Mutex::new(None);
#[derive(Debug)]
pub struct ZipDownloader {
- inner: ArchiveDownloader,
+ inner: FileDownloader,
+ cleanup_executed: IndexMap<String, bool>,
// @phpstan-ignore property.onlyRead (helper property that is set via reflection for testing purposes)
zip_archive_object: Option<ZipArchive>,
}