diff options
| author | nsfisis <nsfisis@gmail.com> | 2026-06-03 23:24:52 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2026-06-03 23:24:52 +0900 |
| commit | dd19bda86582e9f6a4ba1879112d9ab3ba8432f6 (patch) | |
| tree | 9d953ae1e832c499909b37a3df1c94d004ca640e /crates/shirabe/src/downloader/vcs_downloader.rs | |
| parent | 60bfd667e4a98f5463a5bd5f2d0259bd0eeb0a5e (diff) | |
| download | php-shirabe-main.tar.gz php-shirabe-main.tar.zst php-shirabe-main.zip | |
Git/Svn/Hg/Fossil/Perforce now implement ChangeReportInterface and
VcsCapableDownloaderInterface and override the as_* downcasts, so PHP-style
instanceof checks on a DownloaderInterface resolve to these sub-interfaces.
get_local_changes lives directly in the ChangeReportInterface impl
(returning anyhow::Result; GitDownloader now surfaces a RuntimeException
instead of panicking on a failed git status). get_vcs_reference is shared
via a new VcsDownloaderBase helper that each downloader delegates to.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Diffstat (limited to 'crates/shirabe/src/downloader/vcs_downloader.rs')
| -rw-r--r-- | crates/shirabe/src/downloader/vcs_downloader.rs | 18 |
1 files changed, 18 insertions, 0 deletions
diff --git a/crates/shirabe/src/downloader/vcs_downloader.rs b/crates/shirabe/src/downloader/vcs_downloader.rs index fadfa98..493440c 100644 --- a/crates/shirabe/src/downloader/vcs_downloader.rs +++ b/crates/shirabe/src/downloader/vcs_downloader.rs @@ -69,6 +69,24 @@ impl VcsDownloaderBase { // Callers in subclasses must do that check themselves (they already have). Ok(None) } + + pub fn get_vcs_reference(&self, package: PackageInterfaceHandle, path: &str) -> Option<String> { + let parser = VersionParser::new(); + let mut guesser = VersionGuesser::new( + self.config.clone(), + self.process.clone(), + parser.clone(), + Some(self.io.clone()), + ); + let dumper = ArrayDumper::new(); + + let package_config = dumper.dump(package.clone()); + if let Ok(Some(package_version)) = guesser.guess_version(&package_config, path) { + return package_version.commit.clone(); + } + + None + } } pub trait VcsDownloader: |
