aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/mozart-core/src/vcs/downloader/mod.rs
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2026-05-10 20:31:00 +0900
committernsfisis <nsfisis@gmail.com>2026-05-10 20:31:00 +0900
commit59bab6efee41a196b0d9d392167c536abbe068ba (patch)
treef36ca1c8534cf703b357d3f9090ba85efd9a9b74 /crates/mozart-core/src/vcs/downloader/mod.rs
parent24bb31c109332ae982b7091ffcd5183442ce6f6f (diff)
downloadphp-mozart-59bab6efee41a196b0d9d392167c536abbe068ba.tar.gz
php-mozart-59bab6efee41a196b0d9d392167c536abbe068ba.tar.zst
php-mozart-59bab6efee41a196b0d9d392167c536abbe068ba.zip
refactor(downloader): introduce top-level downloader module
Move VCS downloaders and DownloadManager out of vcs/repository into a new top-level downloader module mirroring Composer\Downloader, and add stub types for the remaining Composer downloader hierarchy (file, archive variants, path, perforce, fossil, exceptions, interfaces) so future ports have a home.
Diffstat (limited to 'crates/mozart-core/src/vcs/downloader/mod.rs')
-rw-r--r--crates/mozart-core/src/vcs/downloader/mod.rs56
1 files changed, 0 insertions, 56 deletions
diff --git a/crates/mozart-core/src/vcs/downloader/mod.rs b/crates/mozart-core/src/vcs/downloader/mod.rs
deleted file mode 100644
index 352f330..0000000
--- a/crates/mozart-core/src/vcs/downloader/mod.rs
+++ /dev/null
@@ -1,56 +0,0 @@
-pub mod git;
-pub mod hg;
-pub mod svn;
-
-use std::path::Path;
-
-use anyhow::Result;
-
-/// The VCS downloader interface.
-///
-/// Corresponds to Composer's `VcsDownloader` hierarchy.
-pub trait VcsDownloader {
- /// Prepare for installation (e.g., sync mirror cache).
- fn download(&self, url: &str, reference: &str, target: &Path) -> Result<()>;
-
- /// Install (clone/checkout) the source to the target directory.
- fn install(&self, url: &str, reference: &str, target: &Path) -> Result<()>;
-
- /// Update the source at target to a new reference.
- fn update(&self, url: &str, old_ref: &str, new_ref: &str, target: &Path) -> Result<()>;
-
- /// Remove the source from the target directory.
- fn remove(&self, target: &Path) -> Result<()>;
-
- /// Detect local changes in the working copy.
- /// Returns `None` if clean, `Some(diff)` if modified.
- /// Mirrors `Composer\Downloader\ChangeReportInterface::getLocalChanges`.
- fn get_local_changes(&self, target: &Path) -> Result<Option<String>>;
-
- /// Detect commits present locally but not on the tracking remote.
- /// Returns `None` if there are no unpushed commits or the concept does
- /// not apply (only `GitDownloader` implements this in Composer's
- /// `DvcsDownloaderInterface`).
- fn unpushed_changes(&self, _target: &Path) -> Result<Option<String>> {
- Ok(None)
- }
-
- /// Resolve the working copy's current VCS reference (e.g. commit hash).
- /// Returns `None` if no reference can be determined. Mirrors
- /// `Composer\Downloader\VcsCapableDownloaderInterface::getVcsReference`.
- fn vcs_reference(&self, _target: &Path) -> Result<Option<String>> {
- Ok(None)
- }
-
- /// Get commit log between two references.
- fn commit_logs(&self, from: &str, to: &str, target: &Path) -> Result<String>;
-
- /// instanceof ChangeReportInterface
- fn is_change_report(&self) -> bool;
-
- /// instanceof VcsCapableDownloaderInterface
- fn is_vcs_capable_downloader(&self) -> bool;
-
- /// instanceof DvcsDownloaderInterface
- fn is_dvcs_downloader(&self) -> bool;
-}