Skip to main content

rivet_cli/destination/
mod.rs

1pub mod gcs;
2mod gcs_auth;
3pub mod local;
4pub mod s3;
5pub mod stdout;
6
7use std::path::Path;
8
9use crate::config::DestinationConfig;
10use crate::error::Result;
11
12pub trait Destination {
13    fn write(&self, local_path: &Path, remote_key: &str) -> Result<()>;
14}
15
16pub fn create_destination(config: &DestinationConfig) -> Result<Box<dyn Destination>> {
17    use crate::config::DestinationType;
18    match config.destination_type {
19        DestinationType::Local => Ok(Box::new(local::LocalDestination::new(config)?)),
20        DestinationType::S3 => Ok(Box::new(s3::S3Destination::new(config)?)),
21        DestinationType::Gcs => Ok(Box::new(gcs::GcsDestination::new(config)?)),
22        DestinationType::Stdout => Ok(Box::new(stdout::StdoutDestination::new()?)),
23    }
24}