From 51453a8e93618e22280ce6d6e11271b37879e3b6 Mon Sep 17 00:00:00 2001 From: Damillora Date: Sun, 23 Feb 2025 18:50:12 +0000 Subject: [PATCH] feat: succesfully embed shioriko this time --- Dockerfile | 23 ++++++------- pkg/app/app.go | 32 ++++++------------- {web/app => pkg/web}/.eslintignore | 0 {web/app => pkg/web}/.eslintrc.cjs | 0 {web/app => pkg/web}/.gitignore | 0 {web/app => pkg/web}/.npmrc | 0 {web/app => pkg/web}/README.md | 0 pkg/web/embed.go | 14 ++++++++ {web/app => pkg/web}/package-lock.json | 0 {web/app => pkg/web}/package.json | 0 {web/app => pkg/web}/src/app.d.ts | 0 {web/app => pkg/web}/src/app.html | 0 {web/app => pkg/web}/src/app.scss | 0 {web/app => pkg/web}/src/lib/api.ts | 0 .../lib/components/checks/AuthCheck.svelte | 0 .../lib/components/checks/AuthRequired.svelte | 0 .../components/panels/EditPostPanel.svelte | 0 .../panels/EditTagNotesPanel.svelte | 0 .../lib/components/panels/EditTagPanel.svelte | 0 .../components/panels/UserActionsPanel.svelte | 0 .../components/panels/ViewPostPanel.svelte | 0 .../panels/ViewTagNotesPanel.svelte | 0 .../lib/components/panels/ViewTagPanel.svelte | 0 .../web}/src/lib/components/ui/Navbar.svelte | 0 .../src/lib/components/ui/PostGallery.svelte | 0 .../lib/components/ui/ShiorikoImage.svelte | 0 .../lib/components/ui/TagLinkNumbered.svelte | 0 .../lib/components/ui/TagTypeIndicator.svelte | 0 {web/app => pkg/web}/src/lib/index.ts | 0 {web/app => pkg/web}/src/lib/login-check.js | 0 .../web}/src/lib/simple-pagination.js | 0 {web/app => pkg/web}/src/lib/stores.ts | 0 .../app => pkg/web}/src/routes/+layout.svelte | 0 {web/app => pkg/web}/src/routes/+page.svelte | 0 .../web}/src/routes/auth/+layout.svelte | 0 .../web}/src/routes/auth/login/+page.svelte | 0 .../web}/src/routes/auth/logout/+page.svelte | 0 .../src/routes/auth/register/+page.svelte | 0 .../web}/src/routes/post/[id]/+page.svelte | 0 .../web}/src/routes/posts/+page.svelte | 0 .../web}/src/routes/tags/+page.svelte | 0 .../web}/src/routes/tags/[tag]/+page.svelte | 0 .../web}/src/routes/upload/+page.svelte | 0 .../src/routes/user/password/+page.svelte | 0 .../web}/src/routes/user/profile/+page.svelte | 0 {web/app => pkg/web}/static/.gitignore | 0 {web/app => pkg/web}/svelte.config.js | 3 +- {web/app => pkg/web}/tsconfig.json | 0 {web/app => pkg/web}/vite.config.ts | 0 web/static/.gitignore | 2 -- web/template/layout/footer.html | 4 --- web/template/layout/header.html | 15 --------- web/template/pages/index.html | 3 -- 53 files changed, 34 insertions(+), 62 deletions(-) rename {web/app => pkg/web}/.eslintignore (100%) rename {web/app => pkg/web}/.eslintrc.cjs (100%) rename {web/app => pkg/web}/.gitignore (100%) rename {web/app => pkg/web}/.npmrc (100%) rename {web/app => pkg/web}/README.md (100%) create mode 100644 pkg/web/embed.go rename {web/app => pkg/web}/package-lock.json (100%) rename {web/app => pkg/web}/package.json (100%) rename {web/app => pkg/web}/src/app.d.ts (100%) rename {web/app => pkg/web}/src/app.html (100%) rename {web/app => pkg/web}/src/app.scss (100%) rename {web/app => pkg/web}/src/lib/api.ts (100%) rename {web/app => pkg/web}/src/lib/components/checks/AuthCheck.svelte (100%) rename {web/app => pkg/web}/src/lib/components/checks/AuthRequired.svelte (100%) rename {web/app => pkg/web}/src/lib/components/panels/EditPostPanel.svelte (100%) rename {web/app => pkg/web}/src/lib/components/panels/EditTagNotesPanel.svelte (100%) rename {web/app => pkg/web}/src/lib/components/panels/EditTagPanel.svelte (100%) rename {web/app => pkg/web}/src/lib/components/panels/UserActionsPanel.svelte (100%) rename {web/app => pkg/web}/src/lib/components/panels/ViewPostPanel.svelte (100%) rename {web/app => pkg/web}/src/lib/components/panels/ViewTagNotesPanel.svelte (100%) rename {web/app => pkg/web}/src/lib/components/panels/ViewTagPanel.svelte (100%) rename {web/app => pkg/web}/src/lib/components/ui/Navbar.svelte (100%) rename {web/app => pkg/web}/src/lib/components/ui/PostGallery.svelte (100%) rename {web/app => pkg/web}/src/lib/components/ui/ShiorikoImage.svelte (100%) rename {web/app => pkg/web}/src/lib/components/ui/TagLinkNumbered.svelte (100%) rename {web/app => pkg/web}/src/lib/components/ui/TagTypeIndicator.svelte (100%) rename {web/app => pkg/web}/src/lib/index.ts (100%) rename {web/app => pkg/web}/src/lib/login-check.js (100%) rename {web/app => pkg/web}/src/lib/simple-pagination.js (100%) rename {web/app => pkg/web}/src/lib/stores.ts (100%) rename {web/app => pkg/web}/src/routes/+layout.svelte (100%) rename {web/app => pkg/web}/src/routes/+page.svelte (100%) rename {web/app => pkg/web}/src/routes/auth/+layout.svelte (100%) rename {web/app => pkg/web}/src/routes/auth/login/+page.svelte (100%) rename {web/app => pkg/web}/src/routes/auth/logout/+page.svelte (100%) rename {web/app => pkg/web}/src/routes/auth/register/+page.svelte (100%) rename {web/app => pkg/web}/src/routes/post/[id]/+page.svelte (100%) rename {web/app => pkg/web}/src/routes/posts/+page.svelte (100%) rename {web/app => pkg/web}/src/routes/tags/+page.svelte (100%) rename {web/app => pkg/web}/src/routes/tags/[tag]/+page.svelte (100%) rename {web/app => pkg/web}/src/routes/upload/+page.svelte (100%) rename {web/app => pkg/web}/src/routes/user/password/+page.svelte (100%) rename {web/app => pkg/web}/src/routes/user/profile/+page.svelte (100%) rename {web/app => pkg/web}/static/.gitignore (100%) rename {web/app => pkg/web}/svelte.config.js (88%) rename {web/app => pkg/web}/tsconfig.json (100%) rename {web/app => pkg/web}/vite.config.ts (100%) delete mode 100644 web/static/.gitignore delete mode 100644 web/template/layout/footer.html delete mode 100644 web/template/layout/header.html delete mode 100644 web/template/pages/index.html diff --git a/Dockerfile b/Dockerfile index 513d979..b996308 100644 --- a/Dockerfile +++ b/Dockerfile @@ -1,23 +1,20 @@ -FROM golang:1.23-alpine AS build - -WORKDIR /go/src/shioriko -COPY . . - -RUN go get -d -v ./... -RUN CGO_ENABLED=0 GOOS=linux go build -o /shioriko -ldflags '-extldflags "-static"' -tags timetzdata -RUN mkdir -p /web && cp -r web/static /web - +# Web client FROM node:20-alpine AS node_build WORKDIR /src COPY . . -WORKDIR /src/web/app +WORKDIR /src/pkg/web RUN npm ci && npm run build -FROM scratch AS runtime +# Go application +FROM golang:1.23-alpine AS build +WORKDIR /go/src/shioriko +COPY . . +COPY --from=node_build /src/pkg/web/build/ /go/src/shioriko/pkg/web/build/ +RUN go get -d -v ./... +RUN CGO_ENABLED=0 GOOS=linux go build -o /shioriko -ldflags '-extldflags "-static"' -tags timetzdata +FROM scratch AS runtime WORKDIR /app COPY --from=build /shioriko /app/ COPY --from=build /etc/ssl/certs/ca-certificates.crt /etc/ssl/certs/ -COPY --from=node_build /src/web/static/ /app/web/static/ - ENTRYPOINT ["/app/shioriko"] diff --git a/pkg/app/app.go b/pkg/app/app.go index d5bb66e..3116878 100644 --- a/pkg/app/app.go +++ b/pkg/app/app.go @@ -1,35 +1,17 @@ package app import ( - "embed" + "io/fs" "net/http" "os" "github.com/Damillora/Shioriko/pkg/config" "github.com/Damillora/Shioriko/pkg/database" + "github.com/Damillora/Shioriko/pkg/web" "github.com/gin-contrib/cors" - "github.com/gin-contrib/static" "github.com/gin-gonic/gin" ) -type embedFileSystem struct { - http.FileSystem -} - -func (e embedFileSystem) Exists(prefix string, path string) bool { - _, err := e.Open(path) - if err != nil { - return false - } - return true -} - -func EmbedFolder(fsEmbed embed.FS) static.ServeFileSystem { - return embedFileSystem{ - FileSystem: http.FS(fsEmbed), - } -} - func Initialize() { config.InitializeConfig() @@ -49,10 +31,14 @@ func Initialize() { func Start() { g := gin.Default() - g.StaticFile("/", "./web/static/index.html") - g.Static("/_app", "./web/static/_app") + webFS := web.WebAssets() + webAssets, _ := fs.Sub(webFS, "_app") + + g.StaticFileFS("/", "./app.html", http.FS(webFS)) + // g.StaticFile("/", "./pkg/web/build/index.html") + g.StaticFS("/_app", http.FS(webAssets)) g.Static("/data", config.CurrentConfig.DataDirectory) - + g.Use(cors.Default()) InitializeRoutes(g) diff --git a/web/app/.eslintignore b/pkg/web/.eslintignore similarity index 100% rename from web/app/.eslintignore rename to pkg/web/.eslintignore diff --git a/web/app/.eslintrc.cjs b/pkg/web/.eslintrc.cjs similarity index 100% rename from web/app/.eslintrc.cjs rename to pkg/web/.eslintrc.cjs diff --git a/web/app/.gitignore b/pkg/web/.gitignore similarity index 100% rename from web/app/.gitignore rename to pkg/web/.gitignore diff --git a/web/app/.npmrc b/pkg/web/.npmrc similarity index 100% rename from web/app/.npmrc rename to pkg/web/.npmrc diff --git a/web/app/README.md b/pkg/web/README.md similarity index 100% rename from web/app/README.md rename to pkg/web/README.md diff --git a/pkg/web/embed.go b/pkg/web/embed.go new file mode 100644 index 0000000..ea42a2f --- /dev/null +++ b/pkg/web/embed.go @@ -0,0 +1,14 @@ +package web + +import ( + "embed" + "io/fs" +) + +//go:embed build/* +var webFS embed.FS + +func WebAssets() fs.FS { + build, _ := fs.Sub(webFS, "build") + return build +} diff --git a/web/app/package-lock.json b/pkg/web/package-lock.json similarity index 100% rename from web/app/package-lock.json rename to pkg/web/package-lock.json diff --git a/web/app/package.json b/pkg/web/package.json similarity index 100% rename from web/app/package.json rename to pkg/web/package.json diff --git a/web/app/src/app.d.ts b/pkg/web/src/app.d.ts similarity index 100% rename from web/app/src/app.d.ts rename to pkg/web/src/app.d.ts diff --git a/web/app/src/app.html b/pkg/web/src/app.html similarity index 100% rename from web/app/src/app.html rename to pkg/web/src/app.html diff --git a/web/app/src/app.scss b/pkg/web/src/app.scss similarity index 100% rename from web/app/src/app.scss rename to pkg/web/src/app.scss diff --git a/web/app/src/lib/api.ts b/pkg/web/src/lib/api.ts similarity index 100% rename from web/app/src/lib/api.ts rename to pkg/web/src/lib/api.ts diff --git a/web/app/src/lib/components/checks/AuthCheck.svelte b/pkg/web/src/lib/components/checks/AuthCheck.svelte similarity index 100% rename from web/app/src/lib/components/checks/AuthCheck.svelte rename to pkg/web/src/lib/components/checks/AuthCheck.svelte diff --git a/web/app/src/lib/components/checks/AuthRequired.svelte b/pkg/web/src/lib/components/checks/AuthRequired.svelte similarity index 100% rename from web/app/src/lib/components/checks/AuthRequired.svelte rename to pkg/web/src/lib/components/checks/AuthRequired.svelte diff --git a/web/app/src/lib/components/panels/EditPostPanel.svelte b/pkg/web/src/lib/components/panels/EditPostPanel.svelte similarity index 100% rename from web/app/src/lib/components/panels/EditPostPanel.svelte rename to pkg/web/src/lib/components/panels/EditPostPanel.svelte diff --git a/web/app/src/lib/components/panels/EditTagNotesPanel.svelte b/pkg/web/src/lib/components/panels/EditTagNotesPanel.svelte similarity index 100% rename from web/app/src/lib/components/panels/EditTagNotesPanel.svelte rename to pkg/web/src/lib/components/panels/EditTagNotesPanel.svelte diff --git a/web/app/src/lib/components/panels/EditTagPanel.svelte b/pkg/web/src/lib/components/panels/EditTagPanel.svelte similarity index 100% rename from web/app/src/lib/components/panels/EditTagPanel.svelte rename to pkg/web/src/lib/components/panels/EditTagPanel.svelte diff --git a/web/app/src/lib/components/panels/UserActionsPanel.svelte b/pkg/web/src/lib/components/panels/UserActionsPanel.svelte similarity index 100% rename from web/app/src/lib/components/panels/UserActionsPanel.svelte rename to pkg/web/src/lib/components/panels/UserActionsPanel.svelte diff --git a/web/app/src/lib/components/panels/ViewPostPanel.svelte b/pkg/web/src/lib/components/panels/ViewPostPanel.svelte similarity index 100% rename from web/app/src/lib/components/panels/ViewPostPanel.svelte rename to pkg/web/src/lib/components/panels/ViewPostPanel.svelte diff --git a/web/app/src/lib/components/panels/ViewTagNotesPanel.svelte b/pkg/web/src/lib/components/panels/ViewTagNotesPanel.svelte similarity index 100% rename from web/app/src/lib/components/panels/ViewTagNotesPanel.svelte rename to pkg/web/src/lib/components/panels/ViewTagNotesPanel.svelte diff --git a/web/app/src/lib/components/panels/ViewTagPanel.svelte b/pkg/web/src/lib/components/panels/ViewTagPanel.svelte similarity index 100% rename from web/app/src/lib/components/panels/ViewTagPanel.svelte rename to pkg/web/src/lib/components/panels/ViewTagPanel.svelte diff --git a/web/app/src/lib/components/ui/Navbar.svelte b/pkg/web/src/lib/components/ui/Navbar.svelte similarity index 100% rename from web/app/src/lib/components/ui/Navbar.svelte rename to pkg/web/src/lib/components/ui/Navbar.svelte diff --git a/web/app/src/lib/components/ui/PostGallery.svelte b/pkg/web/src/lib/components/ui/PostGallery.svelte similarity index 100% rename from web/app/src/lib/components/ui/PostGallery.svelte rename to pkg/web/src/lib/components/ui/PostGallery.svelte diff --git a/web/app/src/lib/components/ui/ShiorikoImage.svelte b/pkg/web/src/lib/components/ui/ShiorikoImage.svelte similarity index 100% rename from web/app/src/lib/components/ui/ShiorikoImage.svelte rename to pkg/web/src/lib/components/ui/ShiorikoImage.svelte diff --git a/web/app/src/lib/components/ui/TagLinkNumbered.svelte b/pkg/web/src/lib/components/ui/TagLinkNumbered.svelte similarity index 100% rename from web/app/src/lib/components/ui/TagLinkNumbered.svelte rename to pkg/web/src/lib/components/ui/TagLinkNumbered.svelte diff --git a/web/app/src/lib/components/ui/TagTypeIndicator.svelte b/pkg/web/src/lib/components/ui/TagTypeIndicator.svelte similarity index 100% rename from web/app/src/lib/components/ui/TagTypeIndicator.svelte rename to pkg/web/src/lib/components/ui/TagTypeIndicator.svelte diff --git a/web/app/src/lib/index.ts b/pkg/web/src/lib/index.ts similarity index 100% rename from web/app/src/lib/index.ts rename to pkg/web/src/lib/index.ts diff --git a/web/app/src/lib/login-check.js b/pkg/web/src/lib/login-check.js similarity index 100% rename from web/app/src/lib/login-check.js rename to pkg/web/src/lib/login-check.js diff --git a/web/app/src/lib/simple-pagination.js b/pkg/web/src/lib/simple-pagination.js similarity index 100% rename from web/app/src/lib/simple-pagination.js rename to pkg/web/src/lib/simple-pagination.js diff --git a/web/app/src/lib/stores.ts b/pkg/web/src/lib/stores.ts similarity index 100% rename from web/app/src/lib/stores.ts rename to pkg/web/src/lib/stores.ts diff --git a/web/app/src/routes/+layout.svelte b/pkg/web/src/routes/+layout.svelte similarity index 100% rename from web/app/src/routes/+layout.svelte rename to pkg/web/src/routes/+layout.svelte diff --git a/web/app/src/routes/+page.svelte b/pkg/web/src/routes/+page.svelte similarity index 100% rename from web/app/src/routes/+page.svelte rename to pkg/web/src/routes/+page.svelte diff --git a/web/app/src/routes/auth/+layout.svelte b/pkg/web/src/routes/auth/+layout.svelte similarity index 100% rename from web/app/src/routes/auth/+layout.svelte rename to pkg/web/src/routes/auth/+layout.svelte diff --git a/web/app/src/routes/auth/login/+page.svelte b/pkg/web/src/routes/auth/login/+page.svelte similarity index 100% rename from web/app/src/routes/auth/login/+page.svelte rename to pkg/web/src/routes/auth/login/+page.svelte diff --git a/web/app/src/routes/auth/logout/+page.svelte b/pkg/web/src/routes/auth/logout/+page.svelte similarity index 100% rename from web/app/src/routes/auth/logout/+page.svelte rename to pkg/web/src/routes/auth/logout/+page.svelte diff --git a/web/app/src/routes/auth/register/+page.svelte b/pkg/web/src/routes/auth/register/+page.svelte similarity index 100% rename from web/app/src/routes/auth/register/+page.svelte rename to pkg/web/src/routes/auth/register/+page.svelte diff --git a/web/app/src/routes/post/[id]/+page.svelte b/pkg/web/src/routes/post/[id]/+page.svelte similarity index 100% rename from web/app/src/routes/post/[id]/+page.svelte rename to pkg/web/src/routes/post/[id]/+page.svelte diff --git a/web/app/src/routes/posts/+page.svelte b/pkg/web/src/routes/posts/+page.svelte similarity index 100% rename from web/app/src/routes/posts/+page.svelte rename to pkg/web/src/routes/posts/+page.svelte diff --git a/web/app/src/routes/tags/+page.svelte b/pkg/web/src/routes/tags/+page.svelte similarity index 100% rename from web/app/src/routes/tags/+page.svelte rename to pkg/web/src/routes/tags/+page.svelte diff --git a/web/app/src/routes/tags/[tag]/+page.svelte b/pkg/web/src/routes/tags/[tag]/+page.svelte similarity index 100% rename from web/app/src/routes/tags/[tag]/+page.svelte rename to pkg/web/src/routes/tags/[tag]/+page.svelte diff --git a/web/app/src/routes/upload/+page.svelte b/pkg/web/src/routes/upload/+page.svelte similarity index 100% rename from web/app/src/routes/upload/+page.svelte rename to pkg/web/src/routes/upload/+page.svelte diff --git a/web/app/src/routes/user/password/+page.svelte b/pkg/web/src/routes/user/password/+page.svelte similarity index 100% rename from web/app/src/routes/user/password/+page.svelte rename to pkg/web/src/routes/user/password/+page.svelte diff --git a/web/app/src/routes/user/profile/+page.svelte b/pkg/web/src/routes/user/profile/+page.svelte similarity index 100% rename from web/app/src/routes/user/profile/+page.svelte rename to pkg/web/src/routes/user/profile/+page.svelte diff --git a/web/app/static/.gitignore b/pkg/web/static/.gitignore similarity index 100% rename from web/app/static/.gitignore rename to pkg/web/static/.gitignore diff --git a/web/app/svelte.config.js b/pkg/web/svelte.config.js similarity index 88% rename from web/app/svelte.config.js rename to pkg/web/svelte.config.js index bceb74b..2c2a863 100644 --- a/web/app/svelte.config.js +++ b/pkg/web/svelte.config.js @@ -12,8 +12,7 @@ const config = { // If your environment is not supported or you settled on a specific environment, switch out the adapter. // See https://kit.svelte.dev/docs/adapters for more information about adapters. adapter: adapter({ - fallback: 'index.html', // may differ from host to host, - pages: '../static', + fallback: 'app.html', // may differ from host to host }) }, }; diff --git a/web/app/tsconfig.json b/pkg/web/tsconfig.json similarity index 100% rename from web/app/tsconfig.json rename to pkg/web/tsconfig.json diff --git a/web/app/vite.config.ts b/pkg/web/vite.config.ts similarity index 100% rename from web/app/vite.config.ts rename to pkg/web/vite.config.ts diff --git a/web/static/.gitignore b/web/static/.gitignore deleted file mode 100644 index d6b7ef3..0000000 --- a/web/static/.gitignore +++ /dev/null @@ -1,2 +0,0 @@ -* -!.gitignore diff --git a/web/template/layout/footer.html b/web/template/layout/footer.html deleted file mode 100644 index 20d332a..0000000 --- a/web/template/layout/footer.html +++ /dev/null @@ -1,4 +0,0 @@ - - - - \ No newline at end of file diff --git a/web/template/layout/header.html b/web/template/layout/header.html deleted file mode 100644 index 6e40b10..0000000 --- a/web/template/layout/header.html +++ /dev/null @@ -1,15 +0,0 @@ - - - - - {{ .title }} - - - - - - - - \ No newline at end of file diff --git a/web/template/pages/index.html b/web/template/pages/index.html deleted file mode 100644 index 918a04a..0000000 --- a/web/template/pages/index.html +++ /dev/null @@ -1,3 +0,0 @@ -{{ template "header.html" .}} - -{{ template "footer.html" }} \ No newline at end of file