aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/shirabe/src/downloader/downloader_interface.rs
diff options
context:
space:
mode:
authornsfisis <nsfisis@gmail.com>2026-06-03 23:06:16 +0900
committernsfisis <nsfisis@gmail.com>2026-06-03 23:06:16 +0900
commit60bfd667e4a98f5463a5bd5f2d0259bd0eeb0a5e (patch)
treefd701c69882f6ce67da31fdc3ce0693e3141fddc /crates/shirabe/src/downloader/downloader_interface.rs
parenteba99f7e5f38d9501b37d9b188b6f324a947dc74 (diff)
downloadphp-shirabe-60bfd667e4a98f5463a5bd5f2d0259bd0eeb0a5e.tar.gz
php-shirabe-60bfd667e4a98f5463a5bd5f2d0259bd0eeb0a5e.tar.zst
php-shirabe-60bfd667e4a98f5463a5bd5f2d0259bd0eeb0a5e.zip
feat(downloader): wire as_* downcasts for file/archive/path/git downloaders
Override DownloaderInterface's as_change_report_interface / as_vcs_capable_downloader_interface / as_dvcs_downloader_interface so PHP-style instanceof checks resolve to the concrete sub-interface: FileDownloader and the six archive downloaders (Zip/Tar/Gzip/Xz/Rar/Phar) plus PathDownloader gain ChangeReportInterface (archives/path delegate to the inner FileDownloader), PathDownloader exposes VcsCapableDownloaderInterface, and GitDownloader exposes DvcsDownloaderInterface. The default None impls remain correct for downloaders that do not implement a given sub-interface, so their stale TODO markers are dropped. VCS downloaders' ChangeReport/VcsCapable conformance follows separately. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Diffstat (limited to 'crates/shirabe/src/downloader/downloader_interface.rs')
-rw-r--r--crates/shirabe/src/downloader/downloader_interface.rs3
1 files changed, 0 insertions, 3 deletions
diff --git a/crates/shirabe/src/downloader/downloader_interface.rs b/crates/shirabe/src/downloader/downloader_interface.rs
index 986db28..873438e 100644
--- a/crates/shirabe/src/downloader/downloader_interface.rs
+++ b/crates/shirabe/src/downloader/downloader_interface.rs
@@ -80,19 +80,16 @@ pub trait DownloaderInterface: std::fmt::Debug {
prev_package: Option<PackageInterfaceHandle>,
) -> anyhow::Result<Option<PhpMixed>>;
- /// TODO(phase-b): runtime downcast helpers for PHP `instanceof` checks.
fn as_change_report_interface(&self) -> Option<&dyn crate::downloader::ChangeReportInterface> {
None
}
- /// TODO(phase-b): runtime downcast helpers for PHP `instanceof` checks.
fn as_vcs_capable_downloader_interface(
&self,
) -> Option<&dyn crate::downloader::VcsCapableDownloaderInterface> {
None
}
- /// TODO(phase-b): runtime downcast helpers for PHP `instanceof` checks.
fn as_dvcs_downloader_interface(
&self,
) -> Option<&dyn crate::downloader::DvcsDownloaderInterface> {