include views and assets in binary
This commit is contained in:
parent
e584565db7
commit
9e7d11104a
7 changed files with 32 additions and 15 deletions
|
@ -14,8 +14,6 @@ FROM alpine:3.16 as bin
|
||||||
|
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
COPY --from=build /src/mozhi .
|
COPY --from=build /src/mozhi .
|
||||||
COPY --from=build /src/views ./views
|
|
||||||
COPY --from=build /src/public ./public
|
|
||||||
|
|
||||||
EXPOSE 3000
|
EXPOSE 3000
|
||||||
|
|
||||||
|
|
|
@ -82,3 +82,4 @@ Mozhi is the word in Tamil for language. Simple as that :P
|
||||||
- [Midou36o](https://midou.dev): made the logo
|
- [Midou36o](https://midou.dev): made the logo
|
||||||
- [Missuo](https://github.com/missuo): making gDeepLX that does the hard part of making DeepL work
|
- [Missuo](https://github.com/missuo): making gDeepLX that does the hard part of making DeepL work
|
||||||
- [SimplyTranslate](https://codeberg.org/simpleweb/simplytranslate): Inspiration and base code for the webui
|
- [SimplyTranslate](https://codeberg.org/simpleweb/simplytranslate): Inspiration and base code for the webui
|
||||||
|
- [Rimgo](https://codeberg.org/rimgo/rimgo): Code for embedding html in binary
|
||||||
|
|
10
public/embed.go
Normal file
10
public/embed.go
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
package public
|
||||||
|
|
||||||
|
import "embed"
|
||||||
|
|
||||||
|
//go:embed *
|
||||||
|
var files embed.FS
|
||||||
|
|
||||||
|
func GetFiles() embed.FS {
|
||||||
|
return files
|
||||||
|
}
|
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 15 KiB |
|
@ -3,13 +3,17 @@ package serve
|
||||||
import (
|
import (
|
||||||
"html/template"
|
"html/template"
|
||||||
"log"
|
"log"
|
||||||
|
"net/http"
|
||||||
"os"
|
"os"
|
||||||
"runtime"
|
"runtime"
|
||||||
|
|
||||||
_ "codeberg.org/aryak/mozhi/docs"
|
_ "codeberg.org/aryak/mozhi/docs"
|
||||||
"codeberg.org/aryak/mozhi/pages"
|
"codeberg.org/aryak/mozhi/pages"
|
||||||
|
"codeberg.org/aryak/mozhi/views"
|
||||||
|
"codeberg.org/aryak/mozhi/public"
|
||||||
"github.com/gofiber/fiber/v2"
|
"github.com/gofiber/fiber/v2"
|
||||||
"github.com/gofiber/fiber/v2/middleware/compress"
|
"github.com/gofiber/fiber/v2/middleware/compress"
|
||||||
|
"github.com/gofiber/fiber/v2/middleware/filesystem"
|
||||||
//"github.com/gofiber/fiber/v2/middleware/limiter"
|
//"github.com/gofiber/fiber/v2/middleware/limiter"
|
||||||
// For debugging purposes
|
// For debugging purposes
|
||||||
// "github.com/gofiber/fiber/v2/middleware/logger"
|
// "github.com/gofiber/fiber/v2/middleware/logger"
|
||||||
|
@ -27,7 +31,8 @@ import (
|
||||||
// @license.url https://www.gnu.org/licenses/agpl-3.0.txt
|
// @license.url https://www.gnu.org/licenses/agpl-3.0.txt
|
||||||
// @BasePath /api
|
// @BasePath /api
|
||||||
func Serve(port string) {
|
func Serve(port string) {
|
||||||
engine := html.New("./views", ".html")
|
views := http.FS(views.GetFiles())
|
||||||
|
engine := html.NewFileSystem(views, ".html")
|
||||||
|
|
||||||
engine.AddFunc(
|
engine.AddFunc(
|
||||||
// Add unescape function. This is needed to render HTML from Markdown.
|
// Add unescape function. This is needed to render HTML from Markdown.
|
||||||
|
@ -67,12 +72,6 @@ func Serve(port string) {
|
||||||
// },
|
// },
|
||||||
//})
|
//})
|
||||||
|
|
||||||
staticConfig := fiber.Static{
|
|
||||||
Compress: true,
|
|
||||||
// Cache-Control: max-age=31536000
|
|
||||||
MaxAge: 31536000,
|
|
||||||
}
|
|
||||||
|
|
||||||
// add global headers
|
// add global headers
|
||||||
app.Use(func(c *fiber.Ctx) error {
|
app.Use(func(c *fiber.Ctx) error {
|
||||||
c.Set("X-Frame-Options", "SAMEORIGIN")
|
c.Set("X-Frame-Options", "SAMEORIGIN")
|
||||||
|
@ -92,11 +91,10 @@ func Serve(port string) {
|
||||||
text := c.Query("text")
|
text := c.Query("text")
|
||||||
return c.Redirect("/?engine="+engine+"&from="+to+"&to="+from+"&text="+text+"&redirected=true", 301)
|
return c.Redirect("/?engine="+engine+"&from="+to+"&to="+from+"&text="+text+"&redirected=true", 301)
|
||||||
})
|
})
|
||||||
app.Static("/css", "./public/css", staticConfig)
|
app.Use("/", filesystem.New(filesystem.Config{
|
||||||
app.Static("/robots.txt", "./public/robots.txt", staticConfig)
|
MaxAge: 2592000,
|
||||||
app.Static("/favicon.ico", "./public/assets/favicon.ico", staticConfig)
|
Root: http.FS(public.GetFiles()),
|
||||||
app.Static("/mozhi.svg", "./public/assets/mozhi.svg", staticConfig)
|
}))
|
||||||
app.Static("/mozhi.png", "./public/assets/mozhi.png", staticConfig)
|
|
||||||
// app.Get("/about", pages.HandleAbout)
|
// app.Get("/about", pages.HandleAbout)
|
||||||
|
|
||||||
api := app.Group("/api")
|
api := app.Group("/api")
|
||||||
|
|
10
views/embed.go
Normal file
10
views/embed.go
Normal file
|
@ -0,0 +1,10 @@
|
||||||
|
package views
|
||||||
|
|
||||||
|
import "embed"
|
||||||
|
|
||||||
|
//go:embed *
|
||||||
|
var files embed.FS
|
||||||
|
|
||||||
|
func GetFiles() embed.FS {
|
||||||
|
return files
|
||||||
|
}
|
|
@ -19,7 +19,7 @@
|
||||||
|
|
||||||
<body>
|
<body>
|
||||||
<header>
|
<header>
|
||||||
<a href="/"><img src="/mozhi.png" alt="Mozhi Logo" class="navlogo" /></a>
|
<a href="/"><img src="/assets/mozhi.png" alt="Mozhi Logo" class="navlogo" /></a>
|
||||||
<nav>
|
<nav>
|
||||||
<a href="/about">About</a>
|
<a href="/about">About</a>
|
||||||
<a href="/api/swagger">API</a>
|
<a href="/api/swagger">API</a>
|
||||||
|
|
Loading…
Reference in a new issue