aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShulhan <ms@kilabit.info>2026-02-11 23:05:40 +0700
committerShulhan <ms@kilabit.info>2026-02-11 23:05:40 +0700
commit2686a70d0eeb14c0eba68f449658827e144e75a2 (patch)
tree75fd22c82c480f6476a0207286143673802968f1
parent9657823ef282479a6609fd77c74c3f64cb512ebd (diff)
downloadawwan-2686a70d0eeb14c0eba68f449658827e144e75a2.tar.xz
internal/cmd/www-awwan: add option to set shutdown idle duration
The `-shutdown-idle` option set the duration when server will stop accepting new connections and shutting down.
-rw-r--r--CHANGELOG.adoc11
-rw-r--r--awwan.go2
-rw-r--r--go.mod14
-rw-r--r--go.sum28
-rw-r--r--internal/cmd/www-awwan/main.go36
5 files changed, 51 insertions, 40 deletions
diff --git a/CHANGELOG.adoc b/CHANGELOG.adoc
index 527b99f..996c0c3 100644
--- a/CHANGELOG.adoc
+++ b/CHANGELOG.adoc
@@ -1,5 +1,5 @@
-// SPDX-FileCopyrightText: 2020 M. Shulhan <ms@kilabit.info>
// SPDX-License-Identifier: GPL-3.0-or-later
+// SPDX-FileCopyrightText: 2020 M. Shulhan <ms@kilabit.info>
= Changelog for awwan
:sectanchors:
@@ -15,6 +15,15 @@ Legend,
* 💧: Chores
+[#v0_13_2]
+== awwan v0.13.2 (2026-xx-xx)
+
+**🌼 internal/cmd/www-awwan: add option to set shutdown idle duration**
+
+The `-shutdown-idle` option set the duration when server will stop
+accepting new connections and shutting down.
+
+
[#v0_13_1]
== awwan v0.13.1 (2026-02-09)
diff --git a/awwan.go b/awwan.go
index 4bfcab5..4a34fe0 100644
--- a/awwan.go
+++ b/awwan.go
@@ -21,7 +21,7 @@ import (
)
// Version current version of this module (library and program).
-var Version = `0.13.1`
+var Version = `0.13.2`
// osGetwd define the handler to get current working directory.
//
diff --git a/go.mod b/go.mod
index 0c7d50e..ce1095a 100644
--- a/go.mod
+++ b/go.mod
@@ -7,7 +7,7 @@ go 1.25.0
require (
git.sr.ht/~shulhan/ciigo v0.16.0
- git.sr.ht/~shulhan/pakakeh.go v0.61.0
+ git.sr.ht/~shulhan/pakakeh.go v0.61.1-0.20260211152820-e5a9e1e5314a
github.com/evanw/esbuild v0.27.3
)
@@ -16,14 +16,14 @@ require (
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/crypto v0.47.0 // indirect
- golang.org/x/exp v0.0.0-20260112195511-716be5621a96 // indirect
- golang.org/x/mod v0.32.0 // indirect
- golang.org/x/net v0.49.0 // indirect
+ golang.org/x/crypto v0.48.0 // indirect
+ golang.org/x/exp v0.0.0-20260209203927-2842357ff358 // indirect
+ golang.org/x/mod v0.33.0 // indirect
+ golang.org/x/net v0.50.0 // indirect
golang.org/x/sync v0.19.0 // indirect
golang.org/x/sys v0.41.0 // indirect
- golang.org/x/term v0.39.0 // indirect
- golang.org/x/tools v0.41.0 // indirect
+ golang.org/x/term v0.40.0 // indirect
+ golang.org/x/tools v0.42.0 // indirect
gopkg.in/yaml.v2 v2.4.0 // indirect
)
diff --git a/go.sum b/go.sum
index eb2e183..3825d82 100644
--- a/go.sum
+++ b/go.sum
@@ -2,8 +2,8 @@ git.sr.ht/~shulhan/asciidoctor-go v0.7.3 h1:QjMMG3AgtnWkAIV2OqPfAksCdgonmY6cQXwy
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.0 h1:a/8kcBX0/sCywDbHNrjTmZ4xdJZUZYoedpH1EVuUkPs=
-git.sr.ht/~shulhan/pakakeh.go v0.61.0/go.mod h1:mGR0PxGu4X7Vr2U2/3k4phuPjiFC2seTwJnitk8B4LU=
+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/evanw/esbuild v0.27.3 h1:dH/to9tBKybig6hl25hg4SKIWP7U8COdJKbGEwnUkmU=
github.com/evanw/esbuild v0.27.3/go.mod h1:D2vIQZqV/vIf/VRHtViaUtViZmG7o+kKmlBfVQuRi48=
@@ -19,23 +19,23 @@ 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/crypto v0.47.0 h1:V6e3FRj+n4dbpw86FJ8Fv7XVOql7TEwpHapKoMJ/GO8=
-golang.org/x/crypto v0.47.0/go.mod h1:ff3Y9VzzKbwSSEzWqJsJVBnWmRwRSHt/6Op5n9bQc4A=
-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/mod v0.32.0 h1:9F4d3PHLljb6x//jOyokMv3eX+YDeepZSEo3mFJy93c=
-golang.org/x/mod v0.32.0/go.mod h1:SgipZ/3h2Ci89DlEtEXWUk/HteuRin+HHhN+WbNhguU=
-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/crypto v0.48.0 h1:/VRzVqiRSggnhY7gNRxPauEQ5Drw9haKdM0jqfcCFts=
+golang.org/x/crypto v0.48.0/go.mod h1:r0kV5h3qnFPlQnBSrULhlsRfryS2pmewsg+XfMgkVos=
+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/mod v0.33.0 h1:tHFzIWbBifEmbwtGz65eaWyGiGZatSrT9prnU8DbVL8=
+golang.org/x/mod v0.33.0/go.mod h1:swjeQEj+6r7fODbD2cqrnje9PnziFuw4bmLbBZFrQ5w=
+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/sync v0.19.0 h1:vV+1eWNmZ5geRlYjzm2adRgW2/mcpevXNg50YZtPCE4=
golang.org/x/sync v0.19.0/go.mod h1:9KTHXmSnoGruLpwFjVSX0lNNA75CykiMECbovNTZqGI=
golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
golang.org/x/sys v0.41.0 h1:Ivj+2Cp/ylzLiEU89QhWblYnOE9zerudt9Ftecq2C6k=
golang.org/x/sys v0.41.0/go.mod h1:OgkHotnGiDImocRcuBABYBEXf8A9a87e/uXjp9XT3ks=
-golang.org/x/term v0.39.0 h1:RclSuaJf32jOqZz74CkPA9qFuVTX7vhLlpfj/IGWlqY=
-golang.org/x/term v0.39.0/go.mod h1:yxzUCTP/U+FzoxfdKmLaA0RV1WgE0VY7hXBwKtY/4ww=
-golang.org/x/tools v0.41.0 h1:a9b8iMweWG+S0OBnlU36rzLp20z1Rp10w+IY2czHTQc=
-golang.org/x/tools v0.41.0/go.mod h1:XSY6eDqxVNiYgezAVqqCeihT4j1U2CCsqvH3WhQpnlg=
+golang.org/x/term v0.40.0 h1:36e4zGLqU4yhjlmxEaagx2KuYbJq3EwY8K943ZsHcvg=
+golang.org/x/term v0.40.0/go.mod h1:w2P8uVp06p2iyKKuvXIm7N/y0UCRt3UfJTfZ7oOpglM=
+golang.org/x/tools v0.42.0 h1:uNgphsn75Tdz5Ji2q36v/nsFSfR/9BRFvqhGBaJGd5k=
+golang.org/x/tools v0.42.0/go.mod h1:Ma6lCIwGZvHK6XtgbswSoWroEkhugApmsXyrUmBhfr0=
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/internal/cmd/www-awwan/main.go b/internal/cmd/www-awwan/main.go
index 091cab8..7d04e9a 100644
--- a/internal/cmd/www-awwan/main.go
+++ b/internal/cmd/www-awwan/main.go
@@ -28,8 +28,16 @@ const defAddress = `127.0.0.1:4358`
var MemfsWww *memfs.MemFS
func main() {
- var flagAddress = flag.String(`address`, defAddress, `Address to listen for client`)
- var flagDev = flag.Bool(`dev`, false, `Watch local changes`)
+ var serveOpts = ciigo.ServeOptions{
+ ServerOptions: http.ServerOptions{
+ Memfs: MemfsWww,
+ },
+ }
+
+ flag.StringVar(&serveOpts.Address, `address`, defAddress,
+ `Address to listen for client`)
+ flag.BoolVar(&serveOpts.IsDevelopment, `dev`, false,
+ `Watch local changes`)
flag.Parse()
@@ -40,7 +48,7 @@ func main() {
MaxFileSize: -1,
TryDirect: true,
}
- if *flagDev {
+ if serveOpts.IsDevelopment {
pubOpts.Root = `_bin`
}
@@ -55,6 +63,7 @@ func main() {
}
MemfsWww.Merge(mfsPub)
+ serveOpts.Memfs = MemfsWww
var (
binName = filepath.Base(os.Args[0])
@@ -67,15 +76,8 @@ func main() {
os.Exit(0)
}()
- log.Printf(`--- Starting %s at http://%s with dev=%v`, binName, *flagAddress, *flagDev)
-
- var optsServe = ciigo.ServeOptions{
- ServerOptions: http.ServerOptions{
- Memfs: MemfsWww,
- Address: *flagAddress,
- },
- IsDevelopment: *flagDev,
- }
+ log.Printf(`--- Starting %s at http://%s with dev=%v`, binName,
+ serveOpts.Address, serveOpts.IsDevelopment)
listeners, err := systemd.Listeners(true)
if err != nil {
@@ -85,15 +87,15 @@ func main() {
log.Fatal(`too many listeners received for activation`)
}
if len(listeners) == 1 {
- optsServe.Listener = listeners[0]
- gotAddr := optsServe.Listener.Addr().String()
- if gotAddr != optsServe.Address {
+ serveOpts.Listener = listeners[0]
+ gotAddr := serveOpts.Listener.Addr().String()
+ if gotAddr != serveOpts.Address {
log.Fatalf(`invalid Listener address, got %s, want %s`,
- gotAddr, optsServe.Address)
+ gotAddr, serveOpts.Address)
}
}
- err = ciigo.Serve(optsServe, internal.DocConvertOpts)
+ err = ciigo.Serve(serveOpts, internal.DocConvertOpts)
if err != nil {
log.Fatal(err)
}