From bb80a7315d9e61835eb01f8e28a375e103415d77 Mon Sep 17 00:00:00 2001 From: Leon Mika Date: Sun, 23 Nov 2025 21:26:49 +1100 Subject: [PATCH] Added step to create header image --- .forgejo/workflows/publish.yaml | 13 ++++++++- cmd/fetch-header-image/main.go | 51 +++++++++++++++++++++++++++++++++ go.mod | 8 ++++++ go.sum | 5 ++++ 4 files changed, 76 insertions(+), 1 deletion(-) create mode 100644 cmd/fetch-header-image/main.go create mode 100644 go.mod create mode 100644 go.sum diff --git a/.forgejo/workflows/publish.yaml b/.forgejo/workflows/publish.yaml index bef9381..6fd2359 100644 --- a/.forgejo/workflows/publish.yaml +++ b/.forgejo/workflows/publish.yaml @@ -12,10 +12,21 @@ jobs: - uses: actions/setup-node@v4 with: node-version: 21.1 + - name: Setup Go + uses: actions/setup-go@v3 + with: + go-version: 1.24 - name: Installing Netlify run: | npm install npm install netlify-cli -g + - name: Building Site + run: | + mkdir -p build + cp -r site/* build/. + - name: Building Header Image + run: | + go run ./cmd/header-image -d build - name: Deploying Site run: | - netlify deploy --dir site --prod \ No newline at end of file + netlify deploy --dir build --prod \ No newline at end of file diff --git a/cmd/fetch-header-image/main.go b/cmd/fetch-header-image/main.go new file mode 100644 index 0000000..29bd43e --- /dev/null +++ b/cmd/fetch-header-image/main.go @@ -0,0 +1,51 @@ +package main + +import ( + "bytes" + "flag" + "io" + "log" + "net/http" + "os" + "path/filepath" + + "github.com/disintegration/imaging" +) + +func main() { + targetDir := flag.String("d", ".", "target directory") + flag.Parse() + + var bfr bytes.Buffer + + if err := fetchHeaderImage(&bfr, "https://lmika.org/uploads/2025/pxl-20251120-083552448.jpg"); err != nil { + log.Fatal(err) + } + + img, err := imaging.Decode(&bfr, imaging.AutoOrientation(true)) + if err != nil { + log.Fatal(err) + } + + rImg := imaging.Resize(img, 1280, 0, imaging.Lanczos) + + fullPath := filepath.Join(*targetDir, "header.jpg") + if err := os.MkdirAll(filepath.Dir(fullPath), 0755); err != nil { + log.Fatal(err) + } + + if err := imaging.Save(rImg, fullPath, imaging.JPEGQuality(70)); err != nil { + log.Fatal(err) + } +} + +func fetchHeaderImage(w io.Writer, url string) error { + r, err := http.Get(url) + if err != nil { + return err + } + defer r.Body.Close() + + _, err = io.Copy(w, r.Body) + return err +} diff --git a/go.mod b/go.mod new file mode 100644 index 0000000..2079181 --- /dev/null +++ b/go.mod @@ -0,0 +1,8 @@ +module lmika.dev/lmika/assets-for-lmika.org + +go 1.25.3 + +require ( + github.com/disintegration/imaging v1.6.2 // indirect + golang.org/x/image v0.0.0-20191009234506-e7c1f5e7dbb8 // indirect +) diff --git a/go.sum b/go.sum new file mode 100644 index 0000000..6e27fcd --- /dev/null +++ b/go.sum @@ -0,0 +1,5 @@ +github.com/disintegration/imaging v1.6.2 h1:w1LecBlG2Lnp8B3jk5zSuNqd7b4DXhcjwek1ei82L+c= +github.com/disintegration/imaging v1.6.2/go.mod h1:44/5580QXChDfwIclfc/PCwrr44amcmDAg8hxG0Ewe4= +golang.org/x/image v0.0.0-20191009234506-e7c1f5e7dbb8 h1:hVwzHzIUGRjiF7EcUjqNxk3NCfkPxbDKRdnNE1Rpg0U= +golang.org/x/image v0.0.0-20191009234506-e7c1f5e7dbb8/go.mod h1:FeLwcggjj3mMvU+oOTbSwawSJRM1uh48EjtB4UJZlP0= +golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=