Hello,

Please find attached an updated version of the patch I sent previously.

Since shfmt 3.14.0 has now been released, I updated the port directly
from 3.6.0 to 3.14.0 instead of stopping at 3.13.1. Please disregard
the previous patch.

The upstream release notes and full comparison are available at:

https://github.com/mvdan/sh/releases
https://github.com/mvdan/sh/compare/v3.6.0...v3.14.0

In short, the changes since 3.6.0 include substantial improvements to
the parser, formatter, interpreter, shell expansion, and script
detection code.

shfmt gained EditorConfig support for additional formatting options,
including simplify and minify, null-delimited output for --list and
--find, safer handling of non-regular files, and improved handling of
incomplete shell input.

Shell detection has also been significantly improved. shfmt can infer
the shell variant from filenames such as .bash_profile and .zshrc, and
3.14.0 adds further control over shebang-based detection while scanning
directories.

One of the largest additions is initial Zsh parser and formatter
support. This includes Zsh-specific parameter expansion, subscripting,
special parameters, EditorConfig [[zsh]] sections, and automatic
language detection from common Zsh filenames.

The Bash/POSIX interpreter has also received a large number of
improvements, including support for dotglob and extglob, additional
declare, type, and read options, $RANDOM and $SRANDOM, $BASH_REMATCH,
$! and wait PID, improved variable and array handling, and numerous
fixes for expansion, redirection, globbing, process substitution, and
error handling.

The syntax and expansion packages received broader API and correctness
improvements as well, including iterator APIs, better brace expansion,
more accurate glob semantics, improved here-document and tilde
expansion handling, and fixes for a number of Bash, POSIX, mksh, and
Zsh parsing edge cases.

For the port, MODGO_VERSION is now set to v3.14.0 and I regenerated
modules.inc and distinfo for the current upstream Go dependency set.

No local patches or package list changes are required.

This revised patch supersedes the 3.13.1 update I sent previously.

Thank you for your time and consideration.

Best regards,
David.
Index: devel/shfmt/Makefile
===================================================================
RCS file: /cvs/ports/devel/shfmt/Makefile,v
diff -u -p -u -p -r1.9 Makefile
--- devel/shfmt/Makefile	18 Jun 2023 10:14:22 -0000	1.9
+++ devel/shfmt/Makefile	28 Aug 2026 17:34:51 -0000
@@ -1,7 +1,7 @@
 COMMENT =	shell parser, formatter, and interpreter
 
 MODGO_MODNAME =	mvdan.cc/sh/v3
-MODGO_VERSION =	v3.6.0
+MODGO_VERSION =	v3.14.0
 
 DISTNAME =	shfmt-${MODGO_VERSION}
 
Index: devel/shfmt/distinfo
===================================================================
RCS file: /cvs/ports/devel/shfmt/distinfo,v
diff -u -p -u -p -r1.5 distinfo
--- devel/shfmt/distinfo	18 Jun 2023 10:14:22 -0000	1.5
+++ devel/shfmt/distinfo	28 Aug 2026 17:34:51 -0000
@@ -1,52 +1,88 @@
-SHA256 (go_modules/github.com/creack/pty/@v/v1.1.18.mod) = BBOkGR3M1sdbDMdMtxrxVkBw8uy/zjq0ujzMnXAf2Cw=
-SHA256 (go_modules/github.com/creack/pty/@v/v1.1.18.zip) = fcrad4LgTw1LR9UNTvNfNvLID5CSMQGRSUgEKb2xduU=
+SHA256 (go_modules/github.com/creack/pty/@v/v1.1.24.mod) = o5ef0ywA810X6zuX0LPMb077BXv3gnE2H6dzUx5gFTE=
+SHA256 (go_modules/github.com/creack/pty/@v/v1.1.24.zip) = dU4lJT52pVg7gNV9Ot06/mj8TZ8qSQloqdHtqMj9iBU=
 SHA256 (go_modules/github.com/creack/pty/@v/v1.1.9.mod) = 6rBwW8ShjdMVwnpOPbqPIKnhIwZfogYzlmMytczPdzE=
-SHA256 (go_modules/github.com/frankban/quicktest/@v/v1.14.4.mod) = aLKthKInPSO6xKV0F3Wj+llKB9KnH4DoR6fWPFOlvZ8=
-SHA256 (go_modules/github.com/frankban/quicktest/@v/v1.14.4.zip) = 3uueG53Rg2Lt50i1+TfQguZ8Q/J5wmWnOxT1yDbvXWo=
-SHA256 (go_modules/github.com/google/go-cmp/@v/v0.5.9.mod) = 58dmnUod1Ym6PgJLon9D8pPbYR/gdc4g17iENw1j/r0=
-SHA256 (go_modules/github.com/google/go-cmp/@v/v0.5.9.zip) = MkUIdKx1bvXUf2uBkwUQUwS5gZBFoW4/EFKJt88lLFE=
-SHA256 (go_modules/github.com/google/renameio/v2/@v/v2.0.0.mod) = dqhi31Livy4fWN833CgRSk8HwOrf4uWGaUd1HY1/S0w=
-SHA256 (go_modules/github.com/google/renameio/v2/@v/v2.0.0.zip) = bis93O3Wu1/2abjilL78mjXAHt4w/QChg/xjfOfJ/Y4=
+SHA256 (go_modules/github.com/go-quicktest/qt/@v/v1.102.0.mod) = L5/jytzHuu7ucGhRCkrgJIa9OAeyIhE+hxHoGxSlrWU=
+SHA256 (go_modules/github.com/go-quicktest/qt/@v/v1.102.0.zip) = y81WfUgggfY3nYRManUTfyv5qJ3v0GBGZZlRygOkQTQ=
+SHA256 (go_modules/github.com/google/go-cmp/@v/v0.6.0.mod) = 58dmnUod1Ym6PgJLon9D8pPbYR/gdc4g17iENw1j/r0=
+SHA256 (go_modules/github.com/google/go-cmp/@v/v0.7.0.mod) = Mch0odKhjmKwVQ+CPOeldcjex/j9nU+hlZuxLX98DxQ=
+SHA256 (go_modules/github.com/google/go-cmp/@v/v0.7.0.zip) = ZKnOBG8sMg43g/ug0fShX4oY8LAJtnvyf3YwkZ2z9Tk=
+SHA256 (go_modules/github.com/google/renameio/v2/@v/v2.0.2.mod) = Jc2c5ds2RAvoazVyXTJRmcxWBjKcAq6R0GPTYnU6osA=
+SHA256 (go_modules/github.com/google/renameio/v2/@v/v2.0.2.zip) = TqH37JOMwiBoJ/Ep9A7Zomb03zAZj8/wjeB9pLcidss=
 SHA256 (go_modules/github.com/kr/pretty/@v/v0.3.1.mod) = hPPkCAOx69SoAuVXlLmZffCxc8SAnoVy/5BC7FWMobw=
 SHA256 (go_modules/github.com/kr/pretty/@v/v0.3.1.zip) = 7PWkrySCbDrXWM4GQQygji1Y5NlQU747nd4uFIUsDNw=
 SHA256 (go_modules/github.com/kr/text/@v/v0.2.0.mod) = 9jh5sgT2zolc6lNZS4FPWsCvCEhrM7HKecZXOE77xyY=
 SHA256 (go_modules/github.com/kr/text/@v/v0.2.0.zip) = No6zGPkaW2e+kFxHAyq1wxodSal4SLEBGg0KISKzC6Q=
 SHA256 (go_modules/github.com/pkg/diff/@v/v0.0.0-20210226163009-20ebb0f2a09e.mod) = XVuUVOLQIK8MdgNWjoaQS5m+/E1dZ8OoUF9hIVib0R8=
 SHA256 (go_modules/github.com/pkg/diff/@v/v0.0.0-20210226163009-20ebb0f2a09e.zip) = 81sj/dK5Ui3dRsxcAWG08HZcUUR11dTKKoasoxOIyL0=
+SHA256 (go_modules/github.com/rogpeppe/go-internal/@v/v1.12.0.mod) = e/5bA6stTZVNm3TqzbLMv2ve9jQgGwALl/mg0gIx3H4=
+SHA256 (go_modules/github.com/rogpeppe/go-internal/@v/v1.15.0.mod) = H/o/PB0q2dQFE69mEMIdUq4oOWKGeYVN9CEhL2op7Cc=
+SHA256 (go_modules/github.com/rogpeppe/go-internal/@v/v1.15.0.zip) = yE2VgYFhhAfmHw+DfAoiYBbMe7DebSbS2C/UduO/H3A=
 SHA256 (go_modules/github.com/rogpeppe/go-internal/@v/v1.9.0.mod) = kFmpfaKZDIGaCXZ6XpvYeEtFpXt6JeKQVbvRsKqhRP8=
-SHA256 (go_modules/github.com/rogpeppe/go-internal/@v/v1.9.0.zip) = fXd5CLnJGhaF8tcJVQ5rdHjhTpxGmd/9fwoVDjbbx+k=
-SHA256 (go_modules/golang.org/x/sync/@v/v0.1.0.mod) = Qh9hOWhtWJHz3FpWPQmVeA0yefZcrU0iXOpSaGeUFhw=
-SHA256 (go_modules/golang.org/x/sync/@v/v0.1.0.zip) = 9RC+xgCeGYgtGZU+cnMTfTTfhsZZSTRdcvEjolXC7NI=
-SHA256 (go_modules/golang.org/x/sys/@v/v0.3.0.mod) = 8DMzMJb+GY8xUd7tk/LeunTlC7/nc5E0BFvDt85KUCQ=
-SHA256 (go_modules/golang.org/x/sys/@v/v0.3.0.zip) = y98Y476fIRypYmhKwZ1B1L4kBCiY7AzGZL+NHClV04Q=
-SHA256 (go_modules/golang.org/x/term/@v/v0.3.0.mod) = HlYfdBO3S00wyi1smHTM0Tu4yU2qDmwjd7rZ6c9tvlg=
-SHA256 (go_modules/golang.org/x/term/@v/v0.3.0.zip) = HNnVjqLYYpm4VphyOOY5KlDmiNBGnMs7SkaTSfJDlQc=
-SHA256 (go_modules/mvdan.cc/editorconfig/@v/v0.2.0.mod) = 9Zm959knns+MkZaERhjWNHJZ0j2u5YLTb+XzjOUfLIo=
-SHA256 (go_modules/mvdan.cc/editorconfig/@v/v0.2.0.zip) = qeQ61HQvJ/ey+yeCDTalFxxUD6Q/nsXZK5tm0KA7ctE=
-SHA256 (shfmt-v3.6.0.zip) = 9O0sWTiojonGHIm/fzUzgo8k/2LTdOdTohl++rmIJ5Y=
-SIZE (go_modules/github.com/creack/pty/@v/v1.1.18.mod) = 38
-SIZE (go_modules/github.com/creack/pty/@v/v1.1.18.zip) = 26597
+SHA256 (go_modules/github.com/yuin/goldmark/@v/v1.4.13.mod) = 7n/kRmIDoB06wZrcE0zeyZvG3nGZLCjz3Zp0SAv/BgM=
+SHA256 (go_modules/github.com/yuin/goldmark/@v/v1.4.13.zip) = u0GmArF0NF/aOSyK2D/MkyF8KFx2NplndjC+kP63peM=
+SHA256 (go_modules/golang.org/x/mod/@v/v0.21.0.mod) = 6+gZF0QRVCmfcyuKoJ8plSl1LfKYVcpNcCaUbRu+zYI=
+SHA256 (go_modules/golang.org/x/mod/@v/v0.29.0.mod) = JVIB9tCpC4BHCwKdVrR5GONXy9PkO0bHgKxWEqWmgAQ=
+SHA256 (go_modules/golang.org/x/mod/@v/v0.29.0.zip) = fHNmcscqpXG2XBEGu7KmTlh91CZaGPAFnJkPlcUReWI=
+SHA256 (go_modules/golang.org/x/net/@v/v0.46.0.mod) = emR2w8b4a8zBMPw6Vb6bXiULng3PVNjLndixT5LXVBE=
+SHA256 (go_modules/golang.org/x/net/@v/v0.46.0.zip) = qxdIsqUJqxf9ynoRAfrw4MGHnewO2Y4qcoMESTVtcNI=
+SHA256 (go_modules/golang.org/x/sync/@v/v0.17.0.mod) = 0zPFS3SviguOx0jTfFly0nudCIueRci/XDq1INIRMJA=
+SHA256 (go_modules/golang.org/x/sync/@v/v0.17.0.zip) = xdz9MuIj7cegA6UaFmqBdZpL7MuakeuFOFtNZ6HIIMY=
+SHA256 (go_modules/golang.org/x/sys/@v/v0.26.0.mod) = 0iezJfYh9OvijTm6dz6pm4cPOTt8CcNFksNlsW3VYN4=
+SHA256 (go_modules/golang.org/x/sys/@v/v0.37.0.mod) = 9BGBTYOpboZ4Gx3uQcEluVBNpUItujfMHWOwFq45z+I=
+SHA256 (go_modules/golang.org/x/sys/@v/v0.47.0.mod) = V/Q5PqGNVEahI2OzXCOmFthD+hZpxxIacKK8OpZ31mU=
+SHA256 (go_modules/golang.org/x/sys/@v/v0.47.0.zip) = zawBPdztAmKSbsKf/NpkXaOWcOYcflt2HlcraxgJuxs=
+SHA256 (go_modules/golang.org/x/telemetry/@v/v0.0.0-20251008203120-078029d740a8.mod) = CRcBZmyGkD4z/5OVCq72lOYEvvD15Egv9oag8V7RSPA=
+SHA256 (go_modules/golang.org/x/telemetry/@v/v0.0.0-20251008203120-078029d740a8.zip) = dljysAuB37X94CdwwuCW+gelxuO0XTn2zwrMzqaOL7M=
+SHA256 (go_modules/golang.org/x/term/@v/v0.45.0.mod) = YsP50aWuEiZKtI4siswIyfIBvalhneFxVE61cUt0rsU=
+SHA256 (go_modules/golang.org/x/term/@v/v0.45.0.zip) = s6OvaJcotDASrhshSCVxo1wDPFRemOAhYGvU/PH3kQg=
+SHA256 (go_modules/golang.org/x/tools/@v/v0.26.0.mod) = L/wCTGvxTRRqy+FH+5gQTfO8Zgz7Fqdd4chP5QyKNNA=
+SHA256 (go_modules/golang.org/x/tools/@v/v0.37.0.mod) = 29BOzSltTasnBnZq383S1SwnNFYT1jFoL4+kNxr1Su8=
+SHA256 (go_modules/golang.org/x/tools/@v/v0.38.0.mod) = qViO2A/jO7EIuMicDihsTlyC+UqYJWSWrqCy5T3+yRQ=
+SHA256 (go_modules/golang.org/x/tools/@v/v0.38.0.zip) = f1hwDaXDnY0ZWHIn0kIQEdTMoEB2wcE+u74Ui4UWd8Y=
+SHA256 (go_modules/mvdan.cc/editorconfig/@v/v0.3.0.mod) = 6hl29DmEYwNahO3PuerQWQ4aqP3tMefo/3oNyjEOIuY=
+SHA256 (go_modules/mvdan.cc/editorconfig/@v/v0.3.0.zip) = qlDEPnibAl8EvqlQ8QQxSUbS+qUDVEK/X3QV65eGD+E=
+SHA256 (shfmt-v3.14.0.zip) = 6N8dOO6gxTwdIuqEO3a7kZYqVjuqp6r6xfrhOdUVl7w=
+SIZE (go_modules/github.com/creack/pty/@v/v1.1.24.mod) = 38
+SIZE (go_modules/github.com/creack/pty/@v/v1.1.24.zip) = 40880
 SIZE (go_modules/github.com/creack/pty/@v/v1.1.9.mod) = 39
-SIZE (go_modules/github.com/frankban/quicktest/@v/v1.14.4.mod) = 121
-SIZE (go_modules/github.com/frankban/quicktest/@v/v1.14.4.zip) = 55637
-SIZE (go_modules/github.com/google/go-cmp/@v/v0.5.9.mod) = 41
-SIZE (go_modules/github.com/google/go-cmp/@v/v0.5.9.zip) = 130220
-SIZE (go_modules/github.com/google/renameio/v2/@v/v2.0.0.mod) = 46
-SIZE (go_modules/github.com/google/renameio/v2/@v/v2.0.0.zip) = 22986
+SIZE (go_modules/github.com/go-quicktest/qt/@v/v1.102.0.mod) = 504
+SIZE (go_modules/github.com/go-quicktest/qt/@v/v1.102.0.zip) = 35901
+SIZE (go_modules/github.com/google/go-cmp/@v/v0.6.0.mod) = 41
+SIZE (go_modules/github.com/google/go-cmp/@v/v0.7.0.mod) = 41
+SIZE (go_modules/github.com/google/go-cmp/@v/v0.7.0.zip) = 130179
+SIZE (go_modules/github.com/google/renameio/v2/@v/v2.0.2.mod) = 46
+SIZE (go_modules/github.com/google/renameio/v2/@v/v2.0.2.zip) = 24151
 SIZE (go_modules/github.com/kr/pretty/@v/v0.3.1.mod) = 117
 SIZE (go_modules/github.com/kr/pretty/@v/v0.3.1.zip) = 13388
 SIZE (go_modules/github.com/kr/text/@v/v0.2.0.mod) = 68
 SIZE (go_modules/github.com/kr/text/@v/v0.2.0.zip) = 12607
 SIZE (go_modules/github.com/pkg/diff/@v/v0.0.0-20210226163009-20ebb0f2a09e.mod) = 36
 SIZE (go_modules/github.com/pkg/diff/@v/v0.0.0-20210226163009-20ebb0f2a09e.zip) = 219375
+SIZE (go_modules/github.com/rogpeppe/go-internal/@v/v1.12.0.mod) = 167
+SIZE (go_modules/github.com/rogpeppe/go-internal/@v/v1.15.0.mod) = 141
+SIZE (go_modules/github.com/rogpeppe/go-internal/@v/v1.15.0.zip) = 196760
 SIZE (go_modules/github.com/rogpeppe/go-internal/@v/v1.9.0.mod) = 112
-SIZE (go_modules/github.com/rogpeppe/go-internal/@v/v1.9.0.zip) = 210263
-SIZE (go_modules/golang.org/x/sync/@v/v0.1.0.mod) = 25
-SIZE (go_modules/golang.org/x/sync/@v/v0.1.0.zip) = 27781
-SIZE (go_modules/golang.org/x/sys/@v/v0.3.0.mod) = 33
-SIZE (go_modules/golang.org/x/sys/@v/v0.3.0.zip) = 1862151
-SIZE (go_modules/golang.org/x/term/@v/v0.3.0.mod) = 67
-SIZE (go_modules/golang.org/x/term/@v/v0.3.0.zip) = 19924
-SIZE (go_modules/mvdan.cc/editorconfig/@v/v0.2.0.mod) = 38
-SIZE (go_modules/mvdan.cc/editorconfig/@v/v0.2.0.zip) = 12867
-SIZE (shfmt-v3.6.0.zip) = 244864
+SIZE (go_modules/github.com/yuin/goldmark/@v/v1.4.13.mod) = 41
+SIZE (go_modules/github.com/yuin/goldmark/@v/v1.4.13.zip) = 229017
+SIZE (go_modules/golang.org/x/mod/@v/v0.21.0.mod) = 86
+SIZE (go_modules/golang.org/x/mod/@v/v0.29.0.mod) = 86
+SIZE (go_modules/golang.org/x/mod/@v/v0.29.0.zip) = 172650
+SIZE (go_modules/golang.org/x/net/@v/v0.46.0.mod) = 157
+SIZE (go_modules/golang.org/x/net/@v/v0.46.0.zip) = 1923996
+SIZE (go_modules/golang.org/x/sync/@v/v0.17.0.mod) = 36
+SIZE (go_modules/golang.org/x/sync/@v/v0.17.0.zip) = 25707
+SIZE (go_modules/golang.org/x/sys/@v/v0.26.0.mod) = 33
+SIZE (go_modules/golang.org/x/sys/@v/v0.37.0.mod) = 35
+SIZE (go_modules/golang.org/x/sys/@v/v0.47.0.mod) = 35
+SIZE (go_modules/golang.org/x/sys/@v/v0.47.0.zip) = 2022425
+SIZE (go_modules/golang.org/x/telemetry/@v/v0.0.0-20251008203120-078029d740a8.mod) = 133
+SIZE (go_modules/golang.org/x/telemetry/@v/v0.0.0-20251008203120-078029d740a8.zip) = 1017205
+SIZE (go_modules/golang.org/x/term/@v/v0.45.0.mod) = 70
+SIZE (go_modules/golang.org/x/term/@v/v0.45.0.zip) = 21694
+SIZE (go_modules/golang.org/x/tools/@v/v0.26.0.mod) = 341
+SIZE (go_modules/golang.org/x/tools/@v/v0.37.0.mod) = 301
+SIZE (go_modules/golang.org/x/tools/@v/v0.38.0.mod) = 301
+SIZE (go_modules/golang.org/x/tools/@v/v0.38.0.zip) = 2822153
+SIZE (go_modules/mvdan.cc/editorconfig/@v/v0.3.0.mod) = 38
+SIZE (go_modules/mvdan.cc/editorconfig/@v/v0.3.0.zip) = 13853
+SIZE (shfmt-v3.14.0.zip) = 345112
Index: devel/shfmt/modules.inc
===================================================================
RCS file: /cvs/ports/devel/shfmt/modules.inc,v
diff -u -p -u -p -r1.5 modules.inc
--- devel/shfmt/modules.inc	18 Jun 2023 10:14:22 -0000	1.5
+++ devel/shfmt/modules.inc	28 Aug 2026 17:34:51 -0000
@@ -1,17 +1,30 @@
 MODGO_MODULES =	\
-	github.com/creack/pty		 v1.1.18 \
-	github.com/frankban/quicktest	 v1.14.4 \
-	github.com/google/go-cmp	 v0.5.9 \
-	github.com/google/renameio/v2	 v2.0.0 \
+	github.com/creack/pty		 v1.1.24 \
+	github.com/go-quicktest/qt	 v1.102.0 \
+	github.com/google/go-cmp	 v0.7.0 \
+	github.com/google/renameio/v2	 v2.0.2 \
 	github.com/kr/pretty		 v0.3.1 \
 	github.com/kr/text		 v0.2.0 \
 	github.com/pkg/diff		 v0.0.0-20210226163009-20ebb0f2a09e \
-	github.com/rogpeppe/go-internal	 v1.9.0 \
-	golang.org/x/sync		 v0.1.0 \
-	golang.org/x/sys		 v0.3.0 \
-	golang.org/x/term		 v0.3.0 \
-	mvdan.cc/editorconfig		 v0.2.0
+	github.com/rogpeppe/go-internal	 v1.15.0 \
+	github.com/yuin/goldmark	 v1.4.13 \
+	golang.org/x/mod		 v0.29.0 \
+	golang.org/x/net		 v0.46.0 \
+	golang.org/x/sync		 v0.17.0 \
+	golang.org/x/sys		 v0.47.0 \
+	golang.org/x/telemetry		 v0.0.0-20251008203120-078029d740a8 \
+	golang.org/x/term		 v0.45.0 \
+	golang.org/x/tools		 v0.38.0 \
+	mvdan.cc/editorconfig		 v0.3.0
 
 MODGO_MODFILES =	\
-	github.com/creack/pty	 v1.1.9
+	github.com/creack/pty		 v1.1.9 \
+	github.com/google/go-cmp	 v0.6.0 \
+	github.com/rogpeppe/go-internal	 v1.12.0 \
+	github.com/rogpeppe/go-internal	 v1.9.0 \
+	golang.org/x/mod		 v0.21.0 \
+	golang.org/x/sys		 v0.26.0 \
+	golang.org/x/sys		 v0.37.0 \
+	golang.org/x/tools		 v0.26.0 \
+	golang.org/x/tools		 v0.37.0
 

Reply via email to