diff options
| author | Shulhan <ms@kilabit.info> | 2026-02-11 23:05:40 +0700 |
|---|---|---|
| committer | Shulhan <ms@kilabit.info> | 2026-02-11 23:05:40 +0700 |
| commit | 2686a70d0eeb14c0eba68f449658827e144e75a2 (patch) | |
| tree | 75fd22c82c480f6476a0207286143673802968f1 | |
| parent | 9657823ef282479a6609fd77c74c3f64cb512ebd (diff) | |
| download | awwan-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.adoc | 11 | ||||
| -rw-r--r-- | awwan.go | 2 | ||||
| -rw-r--r-- | go.mod | 14 | ||||
| -rw-r--r-- | go.sum | 28 | ||||
| -rw-r--r-- | internal/cmd/www-awwan/main.go | 36 |
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) @@ -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. // @@ -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 ) @@ -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) } |
