From 47f716bee2dcfdaeae1831a910f8631cd443fd9f Mon Sep 17 00:00:00 2001 From: Dan Carley Date: Wed, 9 Oct 2024 14:16:58 +0100 Subject: [PATCH] fileutil: Omit zsh extensions and shebangs To prevent `shfmt` from discovering `zsh` files which aren't currently supported for formatting. This fixes #535 and the following test: > cmpenv stdout find.golden diff stdout find.golden --- stdout +++ find.golden @@ -16,6 +16,4 @@ modify/shebang-space modify/shebang-tabs modify/shebang-usr-sh -skip/ext.zsh -skip/shebang-zsh symlink/subdir/ext-shebang.sh FAIL: testdata/script/walk.txtar:10: stdout and find.golden differ It could be considered a breaking change to `shfmt` and `fileutil`. There's some discussion in that issue about whether it's beneficial to match `zsh` files because they can _sometimes_ be formatted if they don't contain any zsh-specific syntax, but without any way to explicitly exclude them from discovery it's more of a hindrance than help. --- fileutil/file.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/fileutil/file.go b/fileutil/file.go index d69a2b9b..822d21b2 100644 --- a/fileutil/file.go +++ b/fileutil/file.go @@ -13,8 +13,8 @@ import ( ) var ( - shebangRe = regexp.MustCompile(`^#!\s?/(usr/)?bin/(env\s+)?(sh|bash|mksh|bats|zsh)(\s|$)`) - extRe = regexp.MustCompile(`\.(sh|bash|mksh|bats|zsh)$`) + shebangRe = regexp.MustCompile(`^#!\s?/(usr/)?bin/(env\s+)?(sh|bash|mksh|bats)(\s|$)`) + extRe = regexp.MustCompile(`\.(sh|bash|mksh|bats)$`) ) // TODO: consider removing HasShebang in favor of Shebang in v4