use s3sync::config::Config;
use s3sync::config::args::parse_from_args;
use s3sync::pipeline::Pipeline;
use s3sync::types::token::create_pipeline_cancellation_token;
#[tokio::main]
async fn main() {
let args = vec![
"program_name",
"./test_data/e2e_test/case1",
"s3://XXXXXXX-TEST-BUCKET/",
];
let config = Config::try_from(parse_from_args(args).unwrap()).unwrap();
let cancellation_token = create_pipeline_cancellation_token();
let mut pipeline = Pipeline::new(config.clone(), cancellation_token).await;
pipeline.close_stats_sender();
pipeline.run().await;
if pipeline.has_error() {
println!("An error has occurred.\n\n");
println!("{:?}", pipeline.get_errors_and_consume().unwrap()[0]);
}
if pipeline.has_warning() {
println!("A warning has occurred.\n\n");
}
let sync_stats = pipeline.get_sync_stats().await;
println!(
"Number of transferred objects: {}",
sync_stats.stats_transferred_object
);
}