diff options
| author | nsfisis <nsfisis@gmail.com> | 2026-05-17 13:56:15 +0900 |
|---|---|---|
| committer | nsfisis <nsfisis@gmail.com> | 2026-05-17 13:59:31 +0900 |
| commit | a9bb49c7d685dd82feaf4050f756fdf590315200 (patch) | |
| tree | 0242a737e8280fe9e25c38bb7a6f844d2eff623c /crates/shirabe/src/downloader/vcs_downloader.rs | |
| parent | 15b1be89eb168a30e96459c6a5307afcb7323bbc (diff) | |
| download | php-shirabe-a9bb49c7d685dd82feaf4050f756fdf590315200.tar.gz php-shirabe-a9bb49c7d685dd82feaf4050f756fdf590315200.tar.zst php-shirabe-a9bb49c7d685dd82feaf4050f756fdf590315200.zip | |
fix(compile): implement abstract class traits across all types
Implement BaseCommand trait and other abstract class traits across
all command, downloader, io, package, and VCS driver types. Also
fix trait method signatures for composer_mut and io_mut to return
mutable references to Option rather than Option of mutable references.
Diffstat (limited to 'crates/shirabe/src/downloader/vcs_downloader.rs')
| -rw-r--r-- | crates/shirabe/src/downloader/vcs_downloader.rs | 28 |
1 files changed, 28 insertions, 0 deletions
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 { |
