cobble-core 1.2.0

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

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

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

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

        Ok(())
    }

    pub(crate) async fn read_fabric_version_data(&self) -> CobbleResult<FabricVersionData> {
        let mut file = File::open(self.fabric_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)
    }
}