pinstar 0.3.3

Terminal-based canvas editor for .canvas files
mod app;
mod data;
mod helpers;
mod input;
mod render;
mod state;

use std::path::PathBuf;

fn main() -> anyhow::Result<()> {
    let args: Vec<String> = std::env::args().collect();

    if args.len() != 2 {
        eprintln!("Usage: pinstar <FILE_NAME>.canvas");
        std::process::exit(1);
    }

    let path = PathBuf::from(&args[1]);

    let ext = path
        .extension()
        .map(|e| e.to_string_lossy().to_lowercase())
        .unwrap_or_default();

    if ext != "canvas" {
        eprintln!(
            "Error: '{}' does not have .canvas extension",
            path.display()
        );
        std::process::exit(1);
    }

    if !path.exists() {
        let empty = serde_json::json!({
            "nodes": [],
            "edges": []
        });
        std::fs::write(&path, serde_json::to_string_pretty(&empty)?)?;
        eprintln!("Created empty canvas: {}", path.display());
    }

    app::run_pinstar(path)
}