lingfu 2030.0.1

灵符 - The Ling Project Manifest Tool
use std::fs;
use std::io;
use std::path::{Path, PathBuf};

pub fn scaffold_project_cwd(name: &str, project_kind: &str) -> anyhow::Result<()> {
    let cwd = std::env::current_dir()?;
    let project_dir = cwd.join(name);

    if project_dir.exists() {
        anyhow::bail!("Target directory already exists: {}", project_dir.display());
    }

    fs::create_dir_all(&project_dir)?;

    // Basic skeleton: src/main.ling + README
    fs::create_dir_all(project_dir.join("src"))?;

    // Extremely small placeholder project file(s).
    // Replace/extend later to match your real Ling language semantics.
    fs::write(
        project_dir.join("README.md"),
        format!(
            "# {}\n\nGenerated by lingfu.\n\nProject kind: {}\n",
            name, project_kind
        ),
    )?;

    fs::write(
        project_dir.join("src").join("main.ling"),
        format!(
            "# {}\n# Entry point (scaffold)\n\n# NOTE: This is a placeholder generated by lingfu.\n\nbind start = do {{ print(\"Hello from {}\") }}\n",
            name, name
        ),
    )?;

    Ok(())
}

pub fn sanitize_project_kind(kind: &str) -> String {
    // Keep filesystem-friendly, human-readable-ish value
    kind.trim().replace(' ', "_")
}