rproj 0.15.0

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;
use crate::steps::rojo;

pub fn run() -> Result<()> {
    project_editor::run(draft()?, save, || project_template::reset().map(|_| ()))?;
    Ok(())
}

pub fn run_in(terminal: &mut crate::tui::TerminalSession) -> Result<()> {
    project_editor::run_in(terminal, draft()?, save, || {
        project_template::reset().map(|_| ())
    })?;
    Ok(())
}

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

fn save(value: &serde_json::Value) -> Result<()> {
    rojo::validate_template_with_rojo(value)?;
    project_template::save(value)?;
    Ok(())
}