refactor(assets,embedded): rewrite embedded assets files handling
This commit is contained in:
16
app/app.go
16
app/app.go
@@ -10,6 +10,7 @@ import (
|
||||
"os/signal"
|
||||
"syscall"
|
||||
|
||||
"forge.capytal.company/capytalcode/project-comicverse/assets"
|
||||
"forge.capytal.company/capytalcode/project-comicverse/configs"
|
||||
"forge.capytal.company/capytalcode/project-comicverse/handlers/pages"
|
||||
devPages "forge.capytal.company/capytalcode/project-comicverse/handlers/pages/dev"
|
||||
@@ -20,9 +21,9 @@ import (
|
||||
type App struct {
|
||||
dev bool
|
||||
port int
|
||||
assets http.Handler
|
||||
logger *slog.Logger
|
||||
server *http.Server
|
||||
assets http.Handler
|
||||
}
|
||||
|
||||
type AppOpts struct {
|
||||
@@ -46,11 +47,6 @@ func NewApp(opts ...AppOpts) *App {
|
||||
opts[0].Port = &d
|
||||
}
|
||||
|
||||
if opts[0].Assets == nil {
|
||||
d := http.FileServer(http.Dir("./assets"))
|
||||
opts[0].Assets = d
|
||||
}
|
||||
|
||||
app := &App{
|
||||
dev: *opts[0].Dev,
|
||||
port: *opts[0].Port,
|
||||
@@ -83,12 +79,16 @@ func (a *App) setServer() {
|
||||
|
||||
r.Use(middleware.DevMiddleware)
|
||||
r.Handle("/_dev", devPages.Routes())
|
||||
|
||||
} else {
|
||||
r.Use(middleware.CacheMiddleware)
|
||||
}
|
||||
|
||||
r.Handle("/assets/", a.assets)
|
||||
if configs.DEVELOPMENT && a.assets != nil {
|
||||
r.Handle("/assets/", a.assets)
|
||||
} else {
|
||||
r.Handle("/assets/", http.StripPrefix("/assets/", http.FileServerFS(assets.ASSETS)))
|
||||
}
|
||||
|
||||
r.Handle("/", pages.Routes(a.logger))
|
||||
|
||||
srv := http.Server{
|
||||
|
||||
@@ -1,11 +1,8 @@
|
||||
package assets
|
||||
|
||||
import (
|
||||
_ "embed"
|
||||
"embed"
|
||||
)
|
||||
|
||||
//go:embed css/uno.css
|
||||
var UNO_CSS []byte
|
||||
|
||||
//go:embed css/theme.css
|
||||
var THEME_CSS []byte
|
||||
//go:embed css fonts javascript
|
||||
var ASSETS embed.FS
|
||||
|
||||
24
main.go
24
main.go
@@ -1,7 +1,6 @@
|
||||
package main
|
||||
|
||||
import (
|
||||
"embed"
|
||||
"flag"
|
||||
"net/http"
|
||||
"os"
|
||||
@@ -10,13 +9,9 @@ import (
|
||||
"forge.capytal.company/capytalcode/project-comicverse/app"
|
||||
)
|
||||
|
||||
//go:embed assets
|
||||
var assetsFolder embed.FS
|
||||
|
||||
var (
|
||||
port *int
|
||||
dev *bool
|
||||
assets *string
|
||||
port *int
|
||||
dev *bool
|
||||
)
|
||||
|
||||
func init() {
|
||||
@@ -39,28 +34,15 @@ func init() {
|
||||
d = false
|
||||
}
|
||||
dev = flag.Bool("dev", d, "Run the application in development mode")
|
||||
|
||||
assetsEnv := os.Getenv("COMICVERSE_ASSETS")
|
||||
if assetsEnv == "" {
|
||||
assetsEnv = "./assets"
|
||||
}
|
||||
assets = flag.String("assets", assetsEnv, "The directory for the development assets")
|
||||
}
|
||||
|
||||
func main() {
|
||||
flag.Parse()
|
||||
|
||||
var assetsFS http.Handler
|
||||
if *dev {
|
||||
assetsFS = http.StripPrefix("/assets/", http.FileServer(http.Dir(*assets)))
|
||||
} else {
|
||||
assetsFS = http.FileServerFS(assetsFolder)
|
||||
}
|
||||
|
||||
app := app.NewApp(app.AppOpts{
|
||||
Port: port,
|
||||
Dev: dev,
|
||||
Assets: assetsFS,
|
||||
Assets: http.StripPrefix("/assets/", http.FileServer(http.Dir("./assets"))),
|
||||
})
|
||||
|
||||
app.Run()
|
||||
|
||||
Reference in New Issue
Block a user