rproj 0.13.1

Guided bootstrap-to-game-dev CLI for Roblox: takes a fresh Windows PC to a working Roblox/Luau setup, then scaffolds projects on it
use anyhow::Result;

use crate::config::project_template;
use crate::project_editor::{self, Outcome};
use crate::steps::rojo;
use crate::ui;

pub fn run() -> Result<()> {
    let draft = match project_template::read_text()? {
        Some(text) => text,
        None => format!(
            "{}\n",
            serde_json::to_string_pretty(&rojo::builtin_project_template())?
        ),
    };

    match project_editor::run(draft, rojo::validate_template_with_rojo)? {
        Outcome::Save(template) => {
            let path = project_template::save(&template)?;
            ui::ok(&format!("saved project template to {}", path.display()));
            ui::detail("future projects will inherit this tree; existing projects are unchanged");
        }
        Outcome::Reset => {
            project_template::reset()?;
            ui::ok("restored rproj's built-in project template");
            ui::detail("existing projects are unchanged");
        }
        Outcome::Cancel => ui::skip("nothing changed"),
    }
    Ok(())
}