INNER CODE UNIT · Rust
sync_cloud
mtkennerly/ludusavi · src/api.rs:75
fn sync_cloud(&self, sync: SyncDirection, finality: Finality, games: &[String]) -> Result<Vec<CloudChange>, Error> {
match finality {
Finality::Preview => log::info!("checking cloud sync"),
Finality::Final => log::info!("performing cloud sync"),
}
let remote = crate::cloud::validate_cloud_config(&self.config, &self.config.cloud.path)?;
let games = if !games.is_empty() {
games.iter().filter_map(|x| self.layout.game_folder(x).leaf()).collect()
} else {
vec![]
};
let rclone = Rclone::new(self.config.apps.rclone.clone(), remote);
let mut process = match rclone.sync(self.target(), &self.config.cloud.path, sync, finality, &games) {
Ok(p) => p,
Err(e) => return Err(Error::UnableToSynchronizeCloud(e)),