rivet_cli/destination/
mod.rs1pub 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}