rocket-cli 0.0.1

A fast, ergonomic command-line interface (CLI) for scaffolding and running [Rocket](https://rocket.rs) web applications in Rust. Spin up production-ready APIs in seconds with idiomatic project structure and database-backed templates.
Documentation
#[cfg(test)]
mod tests {
    use rocket_cli::templates::common;
    use rocket_cli::templates::minimal::{files, manifest::load_template};
    use std::collections::{HashMap, HashSet};
    use std::path::PathBuf;

    #[test]
    fn test_load_template_contains_expected_files() {
        let files = load_template();
        let paths: HashSet<_> = files.iter().map(|(p, _)| p.clone()).collect();

        let expected = vec![
            PathBuf::from("Cargo.toml"),
            PathBuf::from("src/main.rs"),
            PathBuf::from("src/routes/mod.rs"),
            PathBuf::from("src/fairings/mod.rs"),
            PathBuf::from("Rocket.toml"),
            PathBuf::from(".gitignore"),
            PathBuf::from(".env"),
        ];

        for path in expected {
            assert!(
                paths.contains(&path),
                "Expected file {:?} not found in template",
                path
            );
        }
    }

    #[test]
    fn test_load_template_file_contents_match() {
        let files = load_template();
        let lookup: HashMap<_, _> = files.into_iter().collect();

        assert_eq!(lookup[&PathBuf::from("Cargo.toml")], files::CARGO_TOML);
        assert_eq!(lookup[&PathBuf::from("src/main.rs")], files::MAIN_RS);
        assert_eq!(
            lookup[&PathBuf::from("src/routes/mod.rs")],
            files::ROUTES_MOD
        );
        assert_eq!(
            lookup[&PathBuf::from("src/fairings/mod.rs")],
            common::files::CORS
        );
        assert_eq!(
            lookup[&PathBuf::from("Rocket.toml")],
            common::files::ROCKET_CONFIG
        );
        assert_eq!(
            lookup[&PathBuf::from(".gitignore")],
            common::files::GITIGNORE
        );
        assert_eq!(lookup[&PathBuf::from(".env")], common::files::ENV);
    }

    #[test]
    fn test_load_template_no_duplicate_paths() {
        let files = load_template();
        let mut seen = HashSet::new();

        for (path, _) in files {
            assert!(
                seen.insert(path.clone()),
                "Duplicate path detected: {:?}",
                path
            );
        }
    }
}