bevy_save 0.11.0

A framework for saving and loading game state in Bevy.
Documentation
#![allow(clippy::uninlined_format_args)]

use std::{
    env,
    fs,
    path::Path,
};

fn main() {
    let workspace = env::var("OUT_DIR")
        .ok()
        .map(|v| Path::new(&v).to_path_buf())
        .and_then(|path| {
            for ancestor in path.ancestors() {
                if let Some(last) = ancestor.file_name() {
                    if last == "target" {
                        return ancestor
                            .parent()
                            .and_then(|p| p.file_name())
                            .and_then(|p| p.to_str())
                            .map(|p| p.to_owned());
                    }
                }
            }

            None
        })
        .expect("Could not find parent workspace.");

    let out_dir = env::var_os("OUT_DIR").unwrap();
    let dest = Path::new(&out_dir).join("workspace.rs");

    fs::write(
        dest,
        format!(
            "/// The name of the project's workspace.\npub const WORKSPACE: &str = {:?};",
            workspace
        ),
    )
    .unwrap();
}