Skip to content
GitLab
菜单
项目
群组
代码片段
/
帮助
帮助
支持
社区论坛
快捷键
?
提交反馈
登录/注册
切换导航
菜单
打开侧边栏
KMSCAKKSCFKA AKFACAMADCAS
brew
提交
d677926d
未验证
提交
d677926d
编辑于
11月 12, 2021
作者:
Mike McQuaid
提交者:
GitHub
11月 12, 2021
浏览文件
Merge pull request #12421 from XuehaiPan/shfmt-if-align
utils/shfmt.sh: improve shell formatter usage
上级
3d4f367b
50cde98f
变更
1
Hide whitespace changes
Inline
Side-by-side
Library/Homebrew/utils/shfmt.sh
浏览文件 @
d677926d
...
...
@@ -227,21 +227,21 @@ no_forbidden_styles() {
align_multiline_if_condition
()
{
local
line
local
lastline
=
''
local
base_indent
=
''
# indents before `if`
local
extra_indent
=
''
# 2 extra spaces for `elif`
local
multiline_if_begin_regex
=
'^( *)(el)?if '
local
multiline_then_end_regex
=
'^(.*)\; (then( *#.*)?)$'
local
within_test_regex
=
'^( *)(((! )?-[fdLrwxeszn] )|([^\[]+ == ))'
local
base_indent
=
''
# indents before `if`
local
elif_
extra_indent
=
''
# 2 extra spaces for `elif`
local
multiline_if_
then_
begin_regex
=
'^( *)(el)?if '
local
multiline_
if_
then_end_regex
=
'^(.*)\; (then( *#.*)?)$'
local
within_test_regex
=
'^( *)(((! )?-[fdLrwxeszn] )|([^\[]+
(
==
|!=|=~)
))'
trim
()
{
[[
"
$1
"
=
~
[
^[:space:]]
(
.
*
[
^[:space:]]
)
?
]]
printf
"%s"
"
${
BASH_REMATCH
[0]
}
"
}
if
[[
"
$1
"
=
~
${
multiline_if_begin_regex
}
]]
if
[[
"
$1
"
=
~
${
multiline_if_
then_
begin_regex
}
]]
then
base_indent
=
"
${
BASH_REMATCH
[1]
}
"
[[
-n
"
${
BASH_REMATCH
[2]
}
"
]]
&&
extra_indent
=
' '
[[
-n
"
${
BASH_REMATCH
[2]
}
"
]]
&&
elif_
extra_indent
=
' '
# 2 extra spaces for `elif`
echo
"
$1
"
shift
fi
...
...
@@ -250,16 +250,21 @@ align_multiline_if_condition() {
do
line
=
"
$1
"
shift
if
[[
"
${
line
}
"
=
~
${
multiline_then_end_regex
}
]]
if
[[
"
${
line
}
"
=
~
${
multiline_
if_
then_end_regex
}
]]
then
line
=
"
${
BASH_REMATCH
[1]
}
"
lastline
=
"
${
base_indent
}${
BASH_REMATCH
[2]
}
"
fi
if
[[
"
${
line
}
"
=
~
${
within_test_regex
}
]]
then
echo
"
${
base_indent
}${
extra_indent
}
$(
trim
"
${
line
}
"
)
"
# Add 3 extra spaces (6 spaces in total) to multiline test conditions
# before: after:
# if [[ -n ... || if [[ -n ... ||
# -n ... ]] -n ... ]]
# then then
echo
"
${
base_indent
}${
elif_extra_indent
}
$(
trim
"
${
line
}
"
)
"
else
echo
"
${
base_indent
}${
extra_indent
}
$(
trim
"
${
line
}
"
)
"
echo
"
${
base_indent
}${
elif_
extra_indent
}
$(
trim
"
${
line
}
"
)
"
fi
done
...
...
@@ -287,24 +292,28 @@ wrap_then_do() {
local
-a
processed
=()
local
-a
buffer
=()
local
line
local
singleline_then_regex
=
'^( *)(el)?if (.+)\; (then( *#.*)?)$'
local
singleline_do_regex
=
'^( *)(for|while) (.+)\; (do( *#.*)?)$'
local
multiline_if_begin_regex
=
'^( *)(el)?if '
local
multiline_then_end_regex
=
'^(.*)\; (then( *#.*)?)$'
local
singleline_if_then_fi_regex
=
'^( *)if (.+)\; then (.+)\; fi( *#.*)?$'
local
singleline_if_then_regex
=
'^( *)(el)?if (.+)\; (then( *#.*)?)$'
local
singleline_for_do_regex
=
'^( *)(for|while) (.+)\; (do( *#.*)?)$'
local
multiline_if_then_begin_regex
=
'^( *)(el)?if '
local
multiline_if_then_end_regex
=
'^(.*)\; (then( *#.*)?)$'
while
IFS
=
''
read
-r
line
do
if
[[
"
${#
buffer
[@]
}
"
==
0
]]
then
if
[[
"
${
line
}
"
=
~
${
singleline_then_regex
}
]]
if
[[
"
${
line
}
"
=
~
${
singleline_if_then_fi_regex
}
]]
then
processed+
=(
"
${
line
}
"
)
elif
[[
"
${
line
}
"
=
~
${
singleline_if_then_regex
}
]]
then
processed+
=(
"
${
BASH_REMATCH
[1]
}${
BASH_REMATCH
[2]
}
if
${
BASH_REMATCH
[3]
}
"
)
processed+
=(
"
${
BASH_REMATCH
[1]
}${
BASH_REMATCH
[4]
}
"
)
elif
[[
"
${
line
}
"
=
~
${
singleline_do_regex
}
]]
elif
[[
"
${
line
}
"
=
~
${
singleline_
for_
do_regex
}
]]
then
processed+
=(
"
${
BASH_REMATCH
[1]
}${
BASH_REMATCH
[2]
}
${
BASH_REMATCH
[3]
}
"
)
processed+
=(
"
${
BASH_REMATCH
[1]
}${
BASH_REMATCH
[4]
}
"
)
elif
[[
"
${
line
}
"
=
~
${
multiline_if_begin_regex
}
]]
elif
[[
"
${
line
}
"
=
~
${
multiline_if_
then_
begin_regex
}
]]
then
buffer
=(
"
${
line
}
"
)
else
...
...
@@ -312,7 +321,7 @@ wrap_then_do() {
fi
else
buffer+
=(
"
${
line
}
"
)
if
[[
"
${
line
}
"
=
~
${
multiline_then_end_regex
}
]]
if
[[
"
${
line
}
"
=
~
${
multiline_
if_
then_end_regex
}
]]
then
while
IFS
=
''
read
-r
line
do
...
...
@@ -351,7 +360,7 @@ format() {
return
1
fi
tempfile
=
"
$(
dirname
"
${
file
}
"
)
/.
${
file
##*/
}
.
temp
"
tempfile
=
"
$(
dirname
"
${
file
}
"
)
/.
${
file
##*/
}
.
formatted~
"
cp
-af
"
${
file
}
"
"
${
tempfile
}
"
fi
trap
'rm -f "${tempfile}" 2>/dev/null'
RETURN
...
...
@@ -396,6 +405,8 @@ format() {
then
cp
-af
"
${
tempfile
}
"
"
${
file
}
"
else
# Show a linebreak between outputs
[[
"
${
RETCODE
}
"
!=
0
]]
&&
onoe
# Show differences
"
${
DIFF
}
"
"
${
DIFF_ARGS
[@]
}
"
"
${
file
}
"
"
${
tempfile
}
"
1>&2
fi
...
...
@@ -434,7 +445,6 @@ do
4
)
onoe
"
${
0
##*/
}
: Fixable bad styles detected in file
\"
${
file
}
\"
, run
\`
brew style --fix
\`
to apply. Formatter exited with code 4."
;;
*
)
onoe
"
${
0
##*/
}
: Failed to format file
\"
${
file
}
\"
. Formatter exited with code
${
retcode
}
."
;;
esac
onoe
RETCODE
=
1
fi
done
...
...
编辑
预览
支持
Markdown
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录