aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/shirabe/src/downloader/vcs_downloader.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/shirabe/src/downloader/vcs_downloader.rs')
-rw-r--r--crates/shirabe/src/downloader/vcs_downloader.rs28
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
{