cobble-core 1.2.0

Library for managing, installing and launching Minecraft instances and more.
Documentation
use crate::error::CobbleResult;
use crate::instance::Instance;
use crate::minecraft::models::VersionData;
use tokio::fs::{create_dir_all, File};
use tokio::io::{AsyncReadExt, AsyncWriteExt};

impl Instance {
    pub(crate) async fn save_version_data(&self, version_data: &VersionData) -> CobbleResult<()> {
        let version_data_json = serde_json::to_vec_pretty(&version_data)?;

        if let Some(parent) = self.version_data_path().parent() {
            trace!("Creating parent folder for version data JSON");
            create_dir_all(parent).await?;
        }

        let mut file = File::create(self.version_data_path()).await?;
        file.write_all(&version_data_json).await?;
        file.sync_all().await?;

        Ok(())
    }

    pub(crate) async fn read_version_data(&self) -> CobbleResult<VersionData> {
        let mut file = File::open(self.version_data_path()).await?;
        let mut buffer = vec![];
        file.read_to_end(&mut buffer).await?;
        let version_data = serde_json::from_slice(&buffer)?;

        Ok(version_data)
    }
}