Template
1
0
Fork 0

Update tailwind.config.js and .air.toml, remove stylegen/package.json and modify base.css and main.go

This commit is contained in:
Atridad Lahiji 2024-01-28 16:17:10 -07:00
parent ac9082194c
commit d9b0bc44fb
No known key found for this signature in database
15 changed files with 134 additions and 25 deletions

View file

@ -5,8 +5,8 @@ tmp_dir = "tmp"
[build]
args_bin = []
bin = "./tmp/main"
pre_cmd = ["cd stylegen && bun i"]
cmd = "go build -o ./tmp/main . & cd stylegen && bun gen"
pre_cmd = []
cmd = "go build -o ./tmp/main . & cd stylegen && ./gen.sh"
delay = 1000
exclude_dir = ["assets", "tmp", "vendor", "testdata", "stylegen"]
exclude_file = []

55
main.go
View file

@ -1,6 +1,15 @@
package main
import (
"crypto/sha256"
"encoding/hex"
"log"
"net/http"
"os"
"path/filepath"
"strings"
"time"
"github.com/joho/godotenv"
"github.com/labstack/echo/v4"
"github.com/labstack/echo/v4/middleware"
@ -16,6 +25,9 @@ func main() {
// Initialize Echo router
e := echo.New()
// Generate a unique version identifier
version := time.Now().Format(time.RFC3339)
// Middleware
e.Use(middleware.Logger())
e.Use(middleware.Recover())
@ -27,6 +39,40 @@ func main() {
Level: 5,
}))
e.Use(middleware.RateLimiter(middleware.NewRateLimiterMemoryStore(50)))
// Use middleware to set ETag and Cache-Control headers
e.Use(func(next echo.HandlerFunc) echo.HandlerFunc {
return func(c echo.Context) error {
// Get the path of the requested resource
path := c.Request().URL.Path
// If the requested resource is a CSS file
if strings.HasSuffix(path, ".css") {
log.Println(path)
// Read the CSS file
data, err := os.ReadFile(filepath.Join("public", strings.TrimPrefix(path, "/public")))
if err != nil {
// Log the error and return a 500 status
log.Println(err)
return c.NoContent(http.StatusInternalServerError)
}
// Compute the hash of the CSS file contents
hash := sha256.Sum256(data)
// Set the ETag to the hash
c.Response().Header().Set("ETag", hex.EncodeToString(hash[:]))
// Set the Content-Type to text/css
c.Response().Header().Set("Content-Type", "text/css")
} else {
// For other resources, set the ETag to the server start time
c.Response().Header().Set("ETag", version)
}
c.Response().Header().Set("Cache-Control", "public, no-cache")
return next(c)
}
})
// Static server
e.Static("/public", "public")
@ -43,6 +89,11 @@ func main() {
apiGroup.GET("/sse", api.SSE)
apiGroup.POST("/sendsse", api.SSEDemoSend)
// Start server
e.Logger.Fatal(e.Start(":3000"))
// Start server with HTTP/2 support
s := &http.Server{
Addr: ":3000",
Handler: e,
}
e.Logger.Fatal(e.StartServer(s))
log.Println("Server started on port 3000")
}

File diff suppressed because one or more lines are too long

19
stylegen/base.css vendored
View file

@ -1,12 +1,15 @@
@import url('daisyui.css') layer(base);
@tailwind base;
@tailwind components;
@tailwind utilities;
html,
container,
body {
height: 100%;
width: 100%;
overflow-y: auto;
position: fixed;
}
@layer base {
html,
container,
body {
height: 100%;
width: 100%;
overflow-y: auto;
position: fixed;
}
}

Binary file not shown.

20
stylegen/daisyui.css vendored Normal file

File diff suppressed because one or more lines are too long

46
stylegen/gen.sh Executable file
View file

@ -0,0 +1,46 @@
#!/bin/sh
OS=$(uname -s)
ARCH=$(uname -m)
# Normalize OS and ARCH identifiers
case $OS in
"Darwin")
OS="macos"
;;
"Linux")
OS="linux"
;;
"CYGWIN"*|"MINGW"*|"MSYS"*)
OS="windows"
;;
*)
echo "Unknown operating system: $OS"
exit 1
;;
esac
case $ARCH in
"x86_64")
ARCH="x64"
;;
"arm64")
ARCH="arm64"
;;
*)
echo "Unsupported architecture: $ARCH"
exit 1
;;
esac
# Construct the binary file name
BINARY="./tw/${OS}-${ARCH}"
if [ "$OS" = "windows" ]; then
BINARY="${BINARY}.exe"
else
# Set execute permissions on the binary
chmod +x $BINARY
fi
# Run the binary
$BINARY build -i ./base.css -o ../public/css/styles.css --minify

View file

@ -1,11 +0,0 @@
{
"scripts": {
"gen": "tailwindcss build ./base.css -o ../public/css/styles.css --minify",
"watch": "tailwindcss build ./base.css -o ../public/css/styles.css --watch --minify"
},
"dependencies": {
"@tailwindcss/typography": "^0.5.10",
"daisyui": "^4.6.0",
"tailwindcss": "^3.4.1"
}
}

View file

@ -7,6 +7,6 @@ module.exports = {
daisyui: {
themes: ["night"],
},
plugins: [require("daisyui"), require('@tailwindcss/typography')],
plugins: [require('@tailwindcss/typography')],
}

BIN
stylegen/tw/linux-arm64 Normal file

Binary file not shown.

BIN
stylegen/tw/linux-x64 Normal file

Binary file not shown.

BIN
stylegen/tw/macos-arm64 Executable file

Binary file not shown.

BIN
stylegen/tw/macos-x64 Normal file

Binary file not shown.

Binary file not shown.

BIN
stylegen/tw/windows-x64.exe Normal file

Binary file not shown.