aboutsummaryrefslogtreecommitdiffhomepage
path: root/crates/shirabe/src/downloader/downloader_interface.rs
diff options
context:
space:
mode:
Diffstat (limited to 'crates/shirabe/src/downloader/downloader_interface.rs')
-rw-r--r--crates/shirabe/src/downloader/downloader_interface.rs20
1 files changed, 20 insertions, 0 deletions
diff --git a/crates/shirabe/src/downloader/downloader_interface.rs b/crates/shirabe/src/downloader/downloader_interface.rs
index 2e7aada..c78a094 100644
--- a/crates/shirabe/src/downloader/downloader_interface.rs
+++ b/crates/shirabe/src/downloader/downloader_interface.rs
@@ -1 +1,21 @@
//! ref: composer/src/Composer/Downloader/DownloaderInterface.php
+
+use shirabe_external_packages::react::promise::promise_interface::PromiseInterface;
+
+use crate::package::package_interface::PackageInterface;
+
+pub trait DownloaderInterface {
+ fn get_installation_source(&self) -> String;
+
+ fn download(&self, package: &dyn PackageInterface, path: &str, prev_package: Option<&dyn PackageInterface>) -> anyhow::Result<Box<dyn PromiseInterface>>;
+
+ fn prepare(&self, r#type: &str, package: &dyn PackageInterface, path: &str, prev_package: Option<&dyn PackageInterface>) -> anyhow::Result<Box<dyn PromiseInterface>>;
+
+ fn install(&self, package: &dyn PackageInterface, path: &str) -> anyhow::Result<Box<dyn PromiseInterface>>;
+
+ fn update(&self, initial: &dyn PackageInterface, target: &dyn PackageInterface, path: &str) -> anyhow::Result<Box<dyn PromiseInterface>>;
+
+ fn remove(&self, package: &dyn PackageInterface, path: &str) -> anyhow::Result<Box<dyn PromiseInterface>>;
+
+ fn cleanup(&self, r#type: &str, package: &dyn PackageInterface, path: &str, prev_package: Option<&dyn PackageInterface>) -> anyhow::Result<Box<dyn PromiseInterface>>;
+}