diff options
Diffstat (limited to 'crates/shirabe/src/downloader')
| -rw-r--r-- | crates/shirabe/src/downloader/fossil_downloader.rs | 4 | ||||
| -rw-r--r-- | crates/shirabe/src/downloader/git_downloader.rs | 6 | ||||
| -rw-r--r-- | crates/shirabe/src/downloader/gzip_downloader.rs | 5 | ||||
| -rw-r--r-- | crates/shirabe/src/downloader/hg_downloader.rs | 4 | ||||
| -rw-r--r-- | crates/shirabe/src/downloader/perforce_downloader.rs | 4 | ||||
| -rw-r--r-- | crates/shirabe/src/downloader/phar_downloader.rs | 5 | ||||
| -rw-r--r-- | crates/shirabe/src/downloader/rar_downloader.rs | 5 | ||||
| -rw-r--r-- | crates/shirabe/src/downloader/svn_downloader.rs | 4 | ||||
| -rw-r--r-- | crates/shirabe/src/downloader/tar_downloader.rs | 5 | ||||
| -rw-r--r-- | crates/shirabe/src/downloader/vcs_downloader.rs | 28 | ||||
| -rw-r--r-- | crates/shirabe/src/downloader/xz_downloader.rs | 5 | ||||
| -rw-r--r-- | crates/shirabe/src/downloader/zip_downloader.rs | 3 |
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>, } |
