diff --git a/.gitignore b/.gitignore index 14af3c0..456cfdd 100644 --- a/.gitignore +++ b/.gitignore @@ -1,2 +1,2 @@ # ignore the binary -prose +/prose diff --git a/Dockerfile b/Dockerfile new file mode 100644 index 0000000..8216ca7 --- /dev/null +++ b/Dockerfile @@ -0,0 +1,24 @@ +FROM golang:bookworm + +WORKDIR / +ENV SASS_VERSION=1.72.0 +ENV SASS_TARFILE="dart-sass-${SASS_VERSION}-linux-x64.tar.gz" +ADD "https://github.com/sass/dart-sass/releases/download/$SASS_VERSION/$SASS_TARFILE" . +RUN tar -xf $SASS_TARFILE +RUN mv dart-sass/* bin/ + +WORKDIR /prose +COPY --link go.mod go.sum ./ +COPY --link cmd/prose cmd/prose +RUN go build ./cmd/prose + +WORKDIR /bin +RUN cp /prose/prose . + +WORKDIR /srv +COPY --link posts posts +COPY --link static static +COPY --link styles styles +COPY --link templates templates +ENV PATH=/bin +ENTRYPOINT ["prose"] diff --git a/README.md b/README.md index a9313fd..a8df6e1 100644 --- a/README.md +++ b/README.md @@ -14,10 +14,15 @@ Posts will be served as `/title-slug`, and files like `static/random/file/struct To start the server: - go run . + go run ./cmd/prose Server will be live on port 8080. +The server can be deployed on a willing host using Docker: + + docker build -t prose . + docker run -p 8080:8080 -it prose + ## License The code in this repository (everything other than the contents of `posts/` and `static/`) is licensed under the MIT license; see LICENSE.md. The blog posts themselves are licensed under [CC-BY-ND 4.0](https://creativecommons.org/licenses/by-nd/4.0/). diff --git a/errorCatcher.go b/cmd/prose/errorCatcher.go similarity index 100% rename from errorCatcher.go rename to cmd/prose/errorCatcher.go diff --git a/listener.go b/cmd/prose/listener.go similarity index 100% rename from listener.go rename to cmd/prose/listener.go diff --git a/post.go b/cmd/prose/post.go similarity index 100% rename from post.go rename to cmd/prose/post.go diff --git a/prose.go b/cmd/prose/prose.go similarity index 100% rename from prose.go rename to cmd/prose/prose.go diff --git a/server.go b/cmd/prose/server.go similarity index 96% rename from server.go rename to cmd/prose/server.go index 92ceb4a..d5480e7 100644 --- a/server.go +++ b/cmd/prose/server.go @@ -265,15 +265,15 @@ func createImage(title, summary, url string, out io.Writer) error { draw := gg.NewContext(imgWidth, imgHeight) - titleFont, err := gg.LoadFontFace("fonts/Nunito-Bold.ttf", titleSize) + titleFont, err := gg.LoadFontFace("static/fonts/Nunito-Bold.ttf", titleSize) if err != nil { return err } - summaryFont, err := gg.LoadFontFace("fonts/Nunito-LightItalic.ttf", summarySize) + summaryFont, err := gg.LoadFontFace("static/fonts/Nunito-LightItalic.ttf", summarySize) if err != nil { return err } - urlFont, err := gg.LoadFontFace("fonts/JetBrainsMono-ExtraLight.ttf", urlSize) + urlFont, err := gg.LoadFontFace("static/fonts/JetBrainsMono-ExtraLight.ttf", urlSize) if err != nil { return err } diff --git a/style.go b/cmd/prose/style.go similarity index 100% rename from style.go rename to cmd/prose/style.go diff --git a/template.go b/cmd/prose/template.go similarity index 100% rename from template.go rename to cmd/prose/template.go diff --git a/fonts/JetBrainsMono-Bold.ttf b/static/fonts/JetBrainsMono-Bold.ttf similarity index 100% rename from fonts/JetBrainsMono-Bold.ttf rename to static/fonts/JetBrainsMono-Bold.ttf diff --git a/fonts/JetBrainsMono-BoldItalic.ttf b/static/fonts/JetBrainsMono-BoldItalic.ttf similarity index 100% rename from fonts/JetBrainsMono-BoldItalic.ttf rename to static/fonts/JetBrainsMono-BoldItalic.ttf diff --git a/fonts/JetBrainsMono-ExtraBold.ttf b/static/fonts/JetBrainsMono-ExtraBold.ttf similarity index 100% rename from fonts/JetBrainsMono-ExtraBold.ttf rename to static/fonts/JetBrainsMono-ExtraBold.ttf diff --git a/fonts/JetBrainsMono-ExtraBoldItalic.ttf b/static/fonts/JetBrainsMono-ExtraBoldItalic.ttf similarity index 100% rename from fonts/JetBrainsMono-ExtraBoldItalic.ttf rename to static/fonts/JetBrainsMono-ExtraBoldItalic.ttf diff --git a/fonts/JetBrainsMono-ExtraLight.ttf b/static/fonts/JetBrainsMono-ExtraLight.ttf similarity index 100% rename from fonts/JetBrainsMono-ExtraLight.ttf rename to static/fonts/JetBrainsMono-ExtraLight.ttf diff --git a/fonts/JetBrainsMono-ExtraLightItalic.ttf b/static/fonts/JetBrainsMono-ExtraLightItalic.ttf similarity index 100% rename from fonts/JetBrainsMono-ExtraLightItalic.ttf rename to static/fonts/JetBrainsMono-ExtraLightItalic.ttf diff --git a/fonts/JetBrainsMono-Italic.ttf b/static/fonts/JetBrainsMono-Italic.ttf similarity index 100% rename from fonts/JetBrainsMono-Italic.ttf rename to static/fonts/JetBrainsMono-Italic.ttf diff --git a/fonts/JetBrainsMono-Light.ttf b/static/fonts/JetBrainsMono-Light.ttf similarity index 100% rename from fonts/JetBrainsMono-Light.ttf rename to static/fonts/JetBrainsMono-Light.ttf diff --git a/fonts/JetBrainsMono-LightItalic.ttf b/static/fonts/JetBrainsMono-LightItalic.ttf similarity index 100% rename from fonts/JetBrainsMono-LightItalic.ttf rename to static/fonts/JetBrainsMono-LightItalic.ttf diff --git a/fonts/JetBrainsMono-Medium.ttf b/static/fonts/JetBrainsMono-Medium.ttf similarity index 100% rename from fonts/JetBrainsMono-Medium.ttf rename to static/fonts/JetBrainsMono-Medium.ttf diff --git a/fonts/JetBrainsMono-MediumItalic.ttf b/static/fonts/JetBrainsMono-MediumItalic.ttf similarity index 100% rename from fonts/JetBrainsMono-MediumItalic.ttf rename to static/fonts/JetBrainsMono-MediumItalic.ttf diff --git a/fonts/JetBrainsMono-Regular.ttf b/static/fonts/JetBrainsMono-Regular.ttf similarity index 100% rename from fonts/JetBrainsMono-Regular.ttf rename to static/fonts/JetBrainsMono-Regular.ttf diff --git a/fonts/JetBrainsMono-SemiBold.ttf b/static/fonts/JetBrainsMono-SemiBold.ttf similarity index 100% rename from fonts/JetBrainsMono-SemiBold.ttf rename to static/fonts/JetBrainsMono-SemiBold.ttf diff --git a/fonts/JetBrainsMono-SemiBoldItalic.ttf b/static/fonts/JetBrainsMono-SemiBoldItalic.ttf similarity index 100% rename from fonts/JetBrainsMono-SemiBoldItalic.ttf rename to static/fonts/JetBrainsMono-SemiBoldItalic.ttf diff --git a/fonts/JetBrainsMono-Thin.ttf b/static/fonts/JetBrainsMono-Thin.ttf similarity index 100% rename from fonts/JetBrainsMono-Thin.ttf rename to static/fonts/JetBrainsMono-Thin.ttf diff --git a/fonts/JetBrainsMono-ThinItalic.ttf b/static/fonts/JetBrainsMono-ThinItalic.ttf similarity index 100% rename from fonts/JetBrainsMono-ThinItalic.ttf rename to static/fonts/JetBrainsMono-ThinItalic.ttf diff --git a/fonts/Nunito-Black.ttf b/static/fonts/Nunito-Black.ttf similarity index 100% rename from fonts/Nunito-Black.ttf rename to static/fonts/Nunito-Black.ttf diff --git a/fonts/Nunito-BlackItalic.ttf b/static/fonts/Nunito-BlackItalic.ttf similarity index 100% rename from fonts/Nunito-BlackItalic.ttf rename to static/fonts/Nunito-BlackItalic.ttf diff --git a/fonts/Nunito-Bold.ttf b/static/fonts/Nunito-Bold.ttf similarity index 100% rename from fonts/Nunito-Bold.ttf rename to static/fonts/Nunito-Bold.ttf diff --git a/fonts/Nunito-BoldItalic.ttf b/static/fonts/Nunito-BoldItalic.ttf similarity index 100% rename from fonts/Nunito-BoldItalic.ttf rename to static/fonts/Nunito-BoldItalic.ttf diff --git a/fonts/Nunito-ExtraBold.ttf b/static/fonts/Nunito-ExtraBold.ttf similarity index 100% rename from fonts/Nunito-ExtraBold.ttf rename to static/fonts/Nunito-ExtraBold.ttf diff --git a/fonts/Nunito-ExtraBoldItalic.ttf b/static/fonts/Nunito-ExtraBoldItalic.ttf similarity index 100% rename from fonts/Nunito-ExtraBoldItalic.ttf rename to static/fonts/Nunito-ExtraBoldItalic.ttf diff --git a/fonts/Nunito-ExtraLight.ttf b/static/fonts/Nunito-ExtraLight.ttf similarity index 100% rename from fonts/Nunito-ExtraLight.ttf rename to static/fonts/Nunito-ExtraLight.ttf diff --git a/fonts/Nunito-ExtraLightItalic.ttf b/static/fonts/Nunito-ExtraLightItalic.ttf similarity index 100% rename from fonts/Nunito-ExtraLightItalic.ttf rename to static/fonts/Nunito-ExtraLightItalic.ttf diff --git a/fonts/Nunito-Italic.ttf b/static/fonts/Nunito-Italic.ttf similarity index 100% rename from fonts/Nunito-Italic.ttf rename to static/fonts/Nunito-Italic.ttf diff --git a/fonts/Nunito-Light.ttf b/static/fonts/Nunito-Light.ttf similarity index 100% rename from fonts/Nunito-Light.ttf rename to static/fonts/Nunito-Light.ttf diff --git a/fonts/Nunito-LightItalic.ttf b/static/fonts/Nunito-LightItalic.ttf similarity index 100% rename from fonts/Nunito-LightItalic.ttf rename to static/fonts/Nunito-LightItalic.ttf diff --git a/fonts/Nunito-Regular.ttf b/static/fonts/Nunito-Regular.ttf similarity index 100% rename from fonts/Nunito-Regular.ttf rename to static/fonts/Nunito-Regular.ttf diff --git a/fonts/Nunito-SemiBold.ttf b/static/fonts/Nunito-SemiBold.ttf similarity index 100% rename from fonts/Nunito-SemiBold.ttf rename to static/fonts/Nunito-SemiBold.ttf diff --git a/fonts/Nunito-SemiBoldItalic.ttf b/static/fonts/Nunito-SemiBoldItalic.ttf similarity index 100% rename from fonts/Nunito-SemiBoldItalic.ttf rename to static/fonts/Nunito-SemiBoldItalic.ttf diff --git a/fonts/OFL.txt b/static/fonts/OFL.txt similarity index 100% rename from fonts/OFL.txt rename to static/fonts/OFL.txt