refactor(assets,embedded): rewrite embedded assets files handling

This commit is contained in:
Guz
2024-10-22 16:56:50 -03:00
parent 409cb86070
commit ea22eedd0e
3 changed files with 14 additions and 35 deletions

View File

@@ -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{

View File

@@ -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
View File

@@ -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()