@@ -8,84 +8,75 @@ import (
88 "github.com/railwayapp/railpack/core/generate"
99)
1010
11- // Detect framework based on provider and plan
1211func DetectFramework (provider Provider , ctx * generate.GenerateContext ) Framework {
1312 switch provider {
14- // Node frameworks
1513 case Node :
1614 framework , ok := ctx .Metadata .Properties ["nodeRuntime" ]
17- if ok {
18- switch framework {
19- case "next" :
20- return Next
21- case "astro" :
22- return Astro
23- case "vite" :
24- return Vite
25- case "cra" :
26- return CRA
27- case "angular" :
28- return Angular
29- case "remix" :
30- return Remix
31- case "bun" :
32- return BunFW
33- case "express" :
34- return Express
35- }
15+ if ! ok {
16+ return UnknownFramework
17+ }
18+ switch framework {
19+ case "next" :
20+ return Next
21+ case "nuxt" :
22+ return Nuxt
23+ case "astro" :
24+ return Astro
25+ case "vite" :
26+ return Vite
27+ case "cra" :
28+ return CRA
29+ case "angular" :
30+ return Angular
31+ case "remix" :
32+ return Remix
33+ case "tanstack-start" :
34+ return TanstackStart
35+ case "react-router" :
36+ return ReactRouter
37+ case "bun" :
38+ return BunFW
39+ case "static" :
40+ return StaticFW
3641 }
37- // Python frameworks
3842 case Python :
3943 framework , ok := ctx .Metadata .Properties ["pythonRuntime" ]
40- if ok {
41- switch framework {
42- case "python" :
43- return PythonFramework
44- case "django" :
45- return Django
46- case "flask" :
47- return Flask
48- case "fastapi" :
49- return FastAPI
50- case "fasthtml" :
51- return FastHTML
52- }
44+ if ! ok {
45+ return UnknownFramework
46+ }
47+ switch framework {
48+ case "django" :
49+ return Django
50+ case "flask" :
51+ return Flask
52+ case "fastapi" :
53+ return FastAPI
54+ case "fasthtml" :
55+ return FastHTML
5356 }
54- // Go frameworks
5557 case Go :
56- gin , ok := ctx .Metadata .Properties ["goGin" ]
57- if ok && gin == "true" {
58+ if ctx .Metadata .Properties ["goGin" ] == "true" {
5859 return Gin
5960 }
60- // Java frameworks
6161 case Java :
62- javaFramework , ok := ctx .Metadata .Properties ["javaFramework" ]
63- if ok {
64- switch javaFramework {
65- case "spring-boot" :
66- return SpringBoot
67- }
62+ if ctx .Metadata .Properties ["javaFramework" ] == "spring-boot" {
63+ return SpringBoot
6864 }
69- // PHP frameworks
7065 case PHP :
71- for _ , log := range ctx .Logger .Logs {
72- if strings .Contains (strings .ToLower (log .Msg ), "laravel" ) {
73- return Laravel
74- }
66+ if ctx .Metadata .Properties ["phpLaravel" ] == "true" {
67+ return Laravel
7568 }
76- // Ruby frameworks
7769 case Ruby :
78- railsFramework , ok := ctx .Metadata .Properties ["rubyRails" ]
79- if ok && railsFramework == "true" {
70+ if ctx .Metadata .Properties ["rubyRails" ] == "true" {
8071 return Rails
8172 }
82- // Rust frameworks
8373 case Rust :
84- if ctx .Deploy != nil {
85- for _ , variable := range ctx .Deploy .Variables {
86- if strings .EqualFold (variable , "rocket_address" ) {
87- return Rocket
88- }
74+ if ctx .Deploy == nil {
75+ return UnknownFramework
76+ }
77+ for _ , variable := range ctx .Deploy .Variables {
78+ if strings .EqualFold (variable , "rocket_address" ) {
79+ return Rocket
8980 }
9081 }
9182 }
@@ -97,43 +88,38 @@ func DetectFramework(provider Provider, ctx *generate.GenerateContext) Framework
9788type Framework string
9889
9990const (
100- // * node frameworks
101- Next Framework = "next"
102- Astro Framework = "astro"
103- Vite Framework = "vite"
104- CRA Framework = "cra"
105- Angular Framework = "angular"
106- Remix Framework = "remix"
107- BunFW Framework = "bun"
108- Express Framework = "express"
109- Sveltekit Framework = "sveltekit"
110- Svelte Framework = "svelte"
111- Solid Framework = "solid"
112- Hono Framework = "hono"
113- TanstackStart Framework = "tanstack-start"
114- // * python frameworks
115- PythonFramework Framework = "python" // Sometimes detected as a framework
116- Django Framework = "django"
117- Flask Framework = "flask"
118- FastAPI Framework = "fastapi"
119- FastHTML Framework = "fasthtml"
120- // * GO frameworks
121- Gin Framework = "gin"
122- // * Java frameworks
123- SpringBoot Framework = "spring-boot"
124- // * PHP frameworks
125- Laravel Framework = "laravel"
126- // * Ruby frameworks
127- Rails Framework = "rails"
128- // * Rust frameworks
129- Rocket Framework = "rocket"
130- // * not detected
91+ Next Framework = "next"
92+ Nuxt Framework = "nuxt"
93+ Astro Framework = "astro"
94+ Vite Framework = "vite"
95+ CRA Framework = "cra"
96+ Angular Framework = "angular"
97+ Remix Framework = "remix"
98+ TanstackStart Framework = "tanstack-start"
99+ ReactRouter Framework = "react-router"
100+ BunFW Framework = "bun"
101+ StaticFW Framework = "static"
102+ Sveltekit Framework = "sveltekit"
103+ Svelte Framework = "svelte"
104+ Solid Framework = "solid"
105+ Hono Framework = "hono"
106+ Express Framework = "express"
107+ Django Framework = "django"
108+ Flask Framework = "flask"
109+ FastAPI Framework = "fastapi"
110+ FastHTML Framework = "fasthtml"
111+ Gin Framework = "gin"
112+ SpringBoot Framework = "spring-boot"
113+ Laravel Framework = "laravel"
114+ Rails Framework = "rails"
115+ Rocket Framework = "rocket"
131116 UnknownFramework Framework = "unknown"
132117)
133118
134119var allFrameworks = []Framework {
135- Next , Astro , Vite , CRA , Angular , Remix , BunFW , Express , Sveltekit , Svelte , Solid , Hono , TanstackStart ,
136- PythonFramework , Django , Flask , FastAPI , FastHTML ,
120+ Next , Nuxt , Astro , Vite , CRA , Angular , Remix , TanstackStart , ReactRouter , BunFW , StaticFW ,
121+ Sveltekit , Svelte , Solid , Hono , Express ,
122+ Django , Flask , FastAPI , FastHTML ,
137123 Gin ,
138124 SpringBoot ,
139125 Laravel ,
0 commit comments