summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShulhan <m.shulhan@gmail.com>2026-02-11 23:12:51 +0700
committerShulhan <m.shulhan@gmail.com>2026-02-11 23:12:51 +0700
commit29a8676f537bf2f5ee0ecdde828787faf96ea94e (patch)
tree7f5943c069bb7d6d060b49bb3bacaf34ccd88cef
parentdf7e460c1471311586ba7705e16e1d50f0a009d7 (diff)
downloadgolang-id-web-29a8676f537bf2f5ee0ecdde828787faf96ea94e.tar.xz
cmd/www-golangid: tambah opsi untuk memastikan server bila diam
Opsi -shutdown-idle menerima durasi yang akan secara otomatis mematikan server apabila tidak ada koneksi baru diterima setelah waktu yang ditentukan.
-rw-r--r--cmd/www-golangid/main.go24
-rw-r--r--go.mod14
-rw-r--r--go.sum24
-rw-r--r--go.work2
-rw-r--r--go.work.sum5
5 files changed, 44 insertions, 25 deletions
diff --git a/cmd/www-golangid/main.go b/cmd/www-golangid/main.go
index dcf2f42..4ab4b77 100644
--- a/cmd/www-golangid/main.go
+++ b/cmd/www-golangid/main.go
@@ -8,8 +8,10 @@ import (
"flag"
"log"
"strings"
+ "time"
"git.sr.ht/~shulhan/ciigo"
+ "git.sr.ht/~shulhan/pakakeh.go/lib/http"
"git.sr.ht/~shulhan/pakakeh.go/lib/memfs"
"git.sr.ht/~shulhan/pakakeh.go/lib/systemd"
)
@@ -39,8 +41,9 @@ func main() {
},
}
serveOpts = ciigo.ServeOptions{
- ConvertOptions: convertOpts,
- Mfs: memFS,
+ ServerOptions: http.ServerOptions{
+ Memfs: memFS,
+ },
}
)
@@ -48,11 +51,22 @@ func main() {
`Jalankan mode pengembangan.`)
flag.StringVar(&serveOpts.Address, `http`, defListenAddr,
`Alamat peladen HTTP.`)
- flag.Parse()
- var cmd = strings.ToLower(flag.Arg(0))
+ var shutdownIdleDuration string
+ flag.StringVar(&shutdownIdleDuration, `shutdown-idle`, ``,
+ `Set the duration when server will shutting down after idle.`)
+
+ flag.Parse()
var err error
+ if shutdownIdleDuration != `` {
+ serveOpts.ShutdownIdleDuration, err = time.ParseDuration(shutdownIdleDuration)
+ if err != nil {
+ log.Fatalf(`invalid shutdown-idle %s: %s`, shutdownIdleDuration, err)
+ }
+ }
+
+ var cmd = strings.ToLower(flag.Arg(0))
switch cmd {
case cmdEmbed:
err = ciigo.GoEmbed(embedOpts)
@@ -72,7 +86,7 @@ func main() {
gotAddr, serveOpts.Address)
}
}
- err = ciigo.Serve(serveOpts)
+ err = ciigo.Serve(serveOpts, convertOpts)
}
if err != nil {
log.Fatal(err)
diff --git a/go.mod b/go.mod
index 0fed7ea..7abc600 100644
--- a/go.mod
+++ b/go.mod
@@ -1,20 +1,20 @@
module github.com/golang-id/web
-go 1.24.0
+go 1.25.0
require (
- git.sr.ht/~shulhan/ciigo v0.15.4-0.20260204204034-aba22ce712d1
- git.sr.ht/~shulhan/pakakeh.go v0.60.3-0.20260205122905-fad13afac8b5
+ git.sr.ht/~shulhan/ciigo v0.16.0
+ git.sr.ht/~shulhan/pakakeh.go v0.61.1-0.20260211152820-e5a9e1e5314a
)
require (
- git.sr.ht/~shulhan/asciidoctor-go v0.7.3-0.20260124143117-f289b7f13a1d // indirect
+ git.sr.ht/~shulhan/asciidoctor-go v0.7.3 // indirect
github.com/kr/text v0.2.0 // indirect
github.com/yuin/goldmark v1.7.16 // indirect
github.com/yuin/goldmark-meta v1.1.0 // indirect
- golang.org/x/exp v0.0.0-20260112195511-716be5621a96 // indirect
- golang.org/x/net v0.49.0 // indirect
- golang.org/x/sys v0.40.0 // indirect
+ golang.org/x/exp v0.0.0-20260209203927-2842357ff358 // indirect
+ golang.org/x/net v0.50.0 // indirect
+ golang.org/x/sys v0.41.0 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
)
diff --git a/go.sum b/go.sum
index 346c9cb..1a6aa8c 100644
--- a/go.sum
+++ b/go.sum
@@ -1,9 +1,9 @@
-git.sr.ht/~shulhan/asciidoctor-go v0.7.3-0.20260124143117-f289b7f13a1d h1:rdDzlVPJjgR6Jz84VNEAbdvNypMPtH3O6uEbVYb/7Rk=
-git.sr.ht/~shulhan/asciidoctor-go v0.7.3-0.20260124143117-f289b7f13a1d/go.mod h1:cY9Ae1vu3OniC7z29twH1/PMJa7ZSSUqbK9QQM4/bhc=
-git.sr.ht/~shulhan/ciigo v0.15.4-0.20260204204034-aba22ce712d1 h1:pOLBF8pJO5LT3wcE412Bvib3UFY4Fa8OQGiot1/GTIU=
-git.sr.ht/~shulhan/ciigo v0.15.4-0.20260204204034-aba22ce712d1/go.mod h1:uuFWUqsbwzeoTbluiwNcpoEah+rhHRf1rrqiMO+V86U=
-git.sr.ht/~shulhan/pakakeh.go v0.60.3-0.20260205122905-fad13afac8b5 h1:u2AfpqceGBzCYPYLOaJCGqKf6sHc9N5fhgZPzJEyqTU=
-git.sr.ht/~shulhan/pakakeh.go v0.60.3-0.20260205122905-fad13afac8b5/go.mod h1:1MkKXbLZRHTcnheeSEbRpGztkym4Yxzh90ep+jCxbDc=
+git.sr.ht/~shulhan/asciidoctor-go v0.7.3 h1:QjMMG3AgtnWkAIV2OqPfAksCdgonmY6cQXwyXp1c764=
+git.sr.ht/~shulhan/asciidoctor-go v0.7.3/go.mod h1:fdqQrwicDfRycH6ovYIQ5NzwbFIryNSsrFn5Gw0IsOk=
+git.sr.ht/~shulhan/ciigo v0.16.0 h1:TOwCaD9mm3hRxbVDsmJ46xRyUxLoH257ACI4M+RLcQo=
+git.sr.ht/~shulhan/ciigo v0.16.0/go.mod h1:rgj8D5KwmfFw4kGWXnGTdUQatSWy/RUCriNGWz4mQRw=
+git.sr.ht/~shulhan/pakakeh.go v0.61.1-0.20260211152820-e5a9e1e5314a h1:VpuI0dK82MqHO5yaDZyfTn3gOU6noFW1wcJBjSsI5Ms=
+git.sr.ht/~shulhan/pakakeh.go v0.61.1-0.20260211152820-e5a9e1e5314a/go.mod h1:cU1ZnE54I0SaI3e1aHAmnMYIXq6N2c7yGbbMpFYOECI=
github.com/creack/pty v1.1.9/go.mod h1:oKZEueFk5CKHvIhNR5MUki03XCEU+Q6VDXinZuGJ33E=
github.com/kr/pretty v0.3.1 h1:flRD4NNwYAUpkphVc1HcthR4KEIFJ65n8Mw5qdRn3LE=
github.com/kr/pretty v0.3.1/go.mod h1:hoEshYVHaxMs3cyo3Yncou5ZscifuDolrwPKZanG3xk=
@@ -15,12 +15,12 @@ github.com/yuin/goldmark v1.7.16 h1:n+CJdUxaFMiDUNnWC3dMWCIQJSkxH4uz3ZwQBkAlVNE=
github.com/yuin/goldmark v1.7.16/go.mod h1:ip/1k0VRfGynBgxOz0yCqHrbZXhcjxyuS66Brc7iBKg=
github.com/yuin/goldmark-meta v1.1.0 h1:pWw+JLHGZe8Rk0EGsMVssiNb/AaPMHfSRszZeUeiOUc=
github.com/yuin/goldmark-meta v1.1.0/go.mod h1:U4spWENafuA7Zyg+Lj5RqK/MF+ovMYtBvXi1lBb2VP0=
-golang.org/x/exp v0.0.0-20260112195511-716be5621a96 h1:Z/6YuSHTLOHfNFdb8zVZomZr7cqNgTJvA8+Qz75D8gU=
-golang.org/x/exp v0.0.0-20260112195511-716be5621a96/go.mod h1:nzimsREAkjBCIEFtHiYkrJyT+2uy9YZJB7H1k68CXZU=
-golang.org/x/net v0.49.0 h1:eeHFmOGUTtaaPSGNmjBKpbng9MulQsJURQUAfUwY++o=
-golang.org/x/net v0.49.0/go.mod h1:/ysNB2EvaqvesRkuLAyjI1ycPZlQHM3q01F02UY/MV8=
-golang.org/x/sys v0.40.0 h1:DBZZqJ2Rkml6QMQsZywtnjnnGvHza6BTfYFWY9kjEWQ=
-golang.org/x/sys v0.40.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=
+golang.org/x/exp v0.0.0-20260209203927-2842357ff358 h1:kpfSV7uLwKJbFSEgNhWzGSL47NDSF/5pYYQw1V0ub6c=
+golang.org/x/exp v0.0.0-20260209203927-2842357ff358/go.mod h1:R3t0oliuryB5eenPWl3rrQxwnNM3WTwnsRZZiXLAAW8=
+golang.org/x/net v0.50.0 h1:ucWh9eiCGyDR3vtzso0WMQinm2Dnt8cFMuQa9K33J60=
+golang.org/x/net v0.50.0/go.mod h1:UgoSli3F/pBgdJBHCTc+tp3gmrU4XswgGRgtnwWTfyM=
+golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k=
+golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=
gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c h1:Hei/4ADfdWqJk1ZMxUNpqntNwaWcugrBjAiHlqqRiVk=
gopkg.in/check.v1 v1.0.0-20201130134442-10cb98267c6c/go.mod h1:JHkPIbrfpd72SG/EVd6muEfDQjcINNoR0C8j2r3qZ4Q=
diff --git a/go.work b/go.work
index 1f58057..47426cf 100644
--- a/go.work
+++ b/go.work
@@ -1,4 +1,4 @@
-go 1.24.0
+go 1.25.0
use (
.
diff --git a/go.work.sum b/go.work.sum
index 9e2e940..e1830e4 100644
--- a/go.work.sum
+++ b/go.work.sum
@@ -4,9 +4,11 @@ github.com/yuin/goldmark v1.4.13/go.mod h1:6yULJ656Px+3vBD8DxQVa3kxgyrAnzto9xy5t
golang.org/x/crypto v0.44.0 h1:A97SsFvM3AIwEEmTBiaxPPTYpDC47w720rdiiUvgoAU=
golang.org/x/crypto v0.44.0/go.mod h1:013i+Nw79BMiQiMsOPcVCB5ZIJbYkerPrGnOa00tvmc=
golang.org/x/crypto v0.47.0/go.mod h1:ff3Y9VzzKbwSSEzWqJsJVBnWmRwRSHt/6Op5n9bQc4A=
+golang.org/x/crypto v0.48.0/go.mod h1:r0kV5h3qnFPlQnBSrULhlsRfryS2pmewsg+XfMgkVos=
golang.org/x/mod v0.29.0/go.mod h1:NyhrlYXJ2H4eJiRy/WDBO6HMqZQ6q9nk4JzS3NuCK+w=
golang.org/x/mod v0.30.0/go.mod h1:lAsf5O2EvJeSFMiBxXDki7sCgAxEUcZHXoXMKT4GJKc=
golang.org/x/mod v0.32.0/go.mod h1:SgipZ/3h2Ci89DlEtEXWUk/HteuRin+HHhN+WbNhguU=
+golang.org/x/mod v0.33.0/go.mod h1:swjeQEj+6r7fODbD2cqrnje9PnziFuw4bmLbBZFrQ5w=
golang.org/x/net v0.46.0/go.mod h1:Q9BGdFy1y4nkUwiLvT5qtyhAnEHgnQ/zd8PfU6nc210=
golang.org/x/sync v0.18.0 h1:kr88TuHDroi+UVf+0hZnirlk8o8T+4MrK6mr60WkH/I=
golang.org/x/sync v0.18.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI=
@@ -14,11 +16,14 @@ golang.org/x/sync v0.19.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI=
golang.org/x/telemetry v0.0.0-20251111182119-bc8e575c7b54/go.mod h1:hKdjCMrbv9skySur+Nek8Hd0uJ0GuxJIoIX2payrIdQ=
golang.org/x/term v0.37.0/go.mod h1:5pB4lxRNYYVZuTLmy8oR2BH8dflOR+IbTYFD8fi3254=
golang.org/x/term v0.39.0/go.mod h1:yxzUCTP/U+FzoxfdKmLaA0RV1WgE0VY7hXBwKtY/4ww=
+golang.org/x/term v0.40.0/go.mod h1:w2P8uVp06p2iyKKuvXIm7N/y0UCRt3UfJTfZ7oOpglM=
golang.org/x/text v0.31.0 h1:aC8ghyu4JhP8VojJ2lEHBnochRno1sgL6nEi9WGFGMM=
golang.org/x/text v0.31.0/go.mod h1:tKRAlv61yKIjGGHX/4tP1LTbc13YSec1pxVEWXzfoeM=
golang.org/x/text v0.33.0/go.mod h1:LuMebE6+rBincTi9+xWTY8TztLzKHc/9C1uBCG27+q8=
+golang.org/x/text v0.34.0/go.mod h1:homfLqTYRFyVYemLBFl5GgL/DWEiH5wcsQ5gSh1yziA=
golang.org/x/tools v0.38.0/go.mod h1:yEsQ/d/YK8cjh0L6rZlY8tgtlKiBNTL14pGDJPJpYQs=
golang.org/x/tools v0.39.0/go.mod h1:JnefbkDPyD8UU2kI5fuf8ZX4/yUeh9W877ZeBONxUqQ=
golang.org/x/tools v0.41.0/go.mod h1:XSY6eDqxVNiYgezAVqqCeihT4j1U2CCsqvH3WhQpnlg=
+golang.org/x/tools v0.42.0/go.mod h1:Ma6lCIwGZvHK6XtgbswSoWroEkhugApmsXyrUmBhfr0=
golang.org/x/tools/go/expect v0.1.1-deprecated/go.mod h1:eihoPOH+FgIqa3FpoTwguz/bVUSGBlGQU67vpBeOrBY=
golang.org/x/tools/go/packages/packagestest v0.1.1-deprecated/go.mod h1:RVAQXBGNv1ib0J382/DPCRS/BPnsGebyM1Gj5VSDpG8=