COGENBAI / cogenbai /languages /modern_frameworks.py
algoscienceacademy's picture
cogenbai
bd91486
Raw
History Blame Contribute Delete
2.78 kB
from typing import Dict, Optional
class ModernFrameworkSupport:
def __init__(self):
self.framework_configs = {
"astro": {
"package_manager": "npm/pnpm",
"setup_command": "npm create astro@latest",
"build_command": "npm run build",
"dev_command": "npm run dev",
"testing": ["vitest", "playwright"],
"deployment": ["vercel", "netlify", "cloudflare"]
},
"sveltekit": {
"package_manager": "npm/pnpm",
"setup_command": "npm create svelte@latest",
"build_command": "npm run build",
"dev_command": "npm run dev",
"testing": ["vitest", "playwright"],
"deployment": ["vercel", "netlify"]
},
"remix": {
"package_manager": "npm/pnpm",
"setup_command": "npx create-remix@latest",
"build_command": "npm run build",
"dev_command": "npm run dev",
"testing": ["vitest", "cypress"],
"deployment": ["vercel", "fly.io"]
},
"nextjs": {
"package_manager": "npm/pnpm",
"setup_command": "npx create-next-app@latest",
"build_command": "npm run build",
"dev_command": "npm run dev",
"testing": ["jest", "cypress"],
"deployment": ["vercel", "netlify"]
}
}
def get_deployment_config(self, framework: str, platform: str) -> Dict:
if framework not in self.framework_configs:
raise ValueError(f"Unsupported framework: {framework}")
if platform not in self.framework_configs[framework]["deployment"]:
raise ValueError(f"Unsupported deployment platform: {platform}")
return {
"platform": platform,
"framework": framework,
"config": self._get_platform_config(framework, platform)
}
def _get_platform_config(self, framework: str, platform: str) -> Dict:
configs = {
"vercel": {
"file": "vercel.json",
"content": {
"buildCommand": self.framework_configs[framework]["build_command"],
"devCommand": self.framework_configs[framework]["dev_command"],
"framework": framework
}
},
"netlify": {
"file": "netlify.toml",
"content": f"""
[build]
command = "{self.framework_configs[framework]['build_command']}"
publish = "dist"
"""
}
}
return configs.get(platform, {})