aui-next-generator 0.2.0

CLI tool to generate Next.js projects with Tailwind CSS, TypeScript, ESLint, and optional React Query integration
Documentation
#[derive(Debug, Clone, PartialEq)]
pub struct ProjectConfig {
    pub name: String,
    pub install_deps: bool,
    pub use_turbo: bool,
    pub use_react_query: bool,
}

impl ProjectConfig {
    pub fn new(name: String, install_deps: bool, use_turbo: bool, use_react_query: bool) -> Self {
        Self {
            name,
            install_deps,
            use_turbo,
            use_react_query,
        }
    }
}

pub static DIRECTORIES: &[&str] = &[
    "src/app",
    "src/components",
    "src/constants",
    "src/hooks",
    "src/libs",
    "src/assets",
    "src/types",
    "src/fonts",
    "src/styles",
    "public",
];

#[cfg(test)]
mod tests {
    use super::*;

    #[test]
    fn test_project_config_new() {
        let config = ProjectConfig::new("test-project".to_string(), true, false, true);

        assert_eq!(config.name, "test-project");
        assert_eq!(config.install_deps, true);
        assert_eq!(config.use_turbo, false);
        assert_eq!(config.use_react_query, true);
    }

    #[test]
    fn test_project_config_clone() {
        let config1 = ProjectConfig::new("original".to_string(), true, true, false);
        let config2 = config1.clone();

        assert_eq!(config1, config2);
    }

    #[test]
    fn test_directories_contains_expected_paths() {
        assert!(DIRECTORIES.contains(&"src/app"));
        assert!(DIRECTORIES.contains(&"src/components"));
        assert!(DIRECTORIES.contains(&"public"));
        assert_eq!(DIRECTORIES.len(), 10);
    }

    #[test]
    fn test_all_directories_start_with_src_or_public() {
        for dir in DIRECTORIES {
            assert!(
                dir.starts_with("src/") || dir == &"public",
                "Directory '{}' should start with 'src/' or be 'public'",
                dir
            );
        }
    }
}