Skip to content

Commit cb06d6c

Browse files
committed
优化
1 parent a9bbe8f commit cb06d6c

File tree

2 files changed

+91
-80
lines changed

2 files changed

+91
-80
lines changed

ChangeMirrors.sh

Lines changed: 42 additions & 37 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#!/bin/bash
22
## Author: SuperManito
3-
## Modified: 2025-10-05
3+
## Modified: 2025-10-09
44
## License: MIT
55
## GitHub: https://github.com/SuperManito/LinuxMirrors
66
## Website: https://linuxmirrors.cn
@@ -62,6 +62,7 @@ mirror_list_edu=(
6262
"西北农林科技大学@mirrors.nwafu.edu.cn"
6363
"浙江大学@mirrors.zju.edu.cn"
6464
"中国科学技术大学@mirrors.ustc.edu.cn"
65+
"官方源@__OFFICIAL_SOURCE_TAG__"
6566
)
6667
# 海外格式:"洲 · 名称 · 国家/地区@地址",修改前请先前往官网阅读添加规范
6768
mirror_list_abroad=(
@@ -1070,43 +1071,46 @@ function check_command_options() {
10701071
function choose_mirrors() {
10711072
## 打印软件源列表
10721073
function print_mirrors_list() {
1073-
local tmp_mirror_name tmp_mirror_url arr_num default_length tmp_length tmp_spaces_nums a i j
1074-
## 计算字符串长度
1074+
local tmp_name tmp_index i j
10751075
function StringLength() {
10761076
local text=$1
10771077
echo "${#text}"
10781078
}
1079-
echo -e ''
10801079

10811080
local list_arr=()
1082-
local list_arr_sum
1083-
list_arr_sum="$(eval echo \${#$1[@]})"
1084-
for ((a = 0; a < $list_arr_sum; a++)); do
1085-
list_arr[$a]="$(eval echo \${$1[a]})"
1081+
local list_arr_sum="$(eval echo \${#$1[@]})"
1082+
for ((i = 0; i < $list_arr_sum; i++)); do
1083+
list_arr[$i]="$(eval echo \${$1[i]})"
10861084
done
1085+
local name_width=${2:-"30"}
10871086
if command_exists printf; then
1087+
local tmp_uchar_1 tmp_uchar_2 tmp_uchar_3 tmp_uchar_4 tmp_default_length tmp_length tmp_unicode_length tmp_spaces_nums tmp_max_length
10881088
for ((i = 0; i < ${#list_arr[@]}; i++)); do
1089-
tmp_mirror_name=$(echo "${list_arr[i]}" | awk -F '@' '{print$1}')
1090-
# tmp_mirror_url=$(echo "${list_arr[i]}" | awk -F '@' '{print$2}')
1091-
arr_num=$((i + 1))
1092-
default_length=${2:-"30"}
1093-
[[ $(echo "${tmp_mirror_name}" | grep -c "") -gt 0 ]] && let default_length+=$(echo "${tmp_mirror_name}" | grep -c "")
1094-
[[ $(echo "${tmp_mirror_name}" | grep -c "") -gt 0 ]] && let default_length+=$(echo "${tmp_mirror_name}" | grep -c "")
1095-
[[ $(echo "${tmp_mirror_name}" | grep -c "") -gt 0 ]] && let default_length+=$(echo "${tmp_mirror_name}" | grep -c "")
1096-
[[ $(echo "${tmp_mirror_name}" | grep -c "") -gt 0 ]] && let default_length+=$(echo "${tmp_mirror_name}" | grep -c "")
1097-
tmp_length=$(StringLength "$(echo "${tmp_mirror_name// /}" | sed "s|[0-9a-zA-Z\.\=\:\_\(\)\'\"-\/\!·]||g;")")
1098-
tmp_spaces_nums=$(($((default_length - tmp_length - $(StringLength "${tmp_mirror_name}"))) / 2))
1099-
for ((j = 1; j <= ${tmp_spaces_nums}; j++)); do
1100-
tmp_mirror_name="${tmp_mirror_name} "
1101-
done
1102-
printf "❖ %-$((default_length + tmp_length))s %4s\n" "${tmp_mirror_name}" "$arr_num)"
1089+
tmp_name="$(echo "${list_arr[i]}" | awk -F '@' '{print$1}')"
1090+
tmp_index=$((i + 1))
1091+
tmp_default_length="${name_width}"
1092+
tmp_uchar_1=$(echo "${tmp_name}" | grep -c "")
1093+
tmp_uchar_2=$(echo "${tmp_name}" | grep -c "")
1094+
tmp_uchar_3=$(echo "${tmp_name}" | grep -c "")
1095+
tmp_uchar_4=$(echo "${tmp_name}" | grep -c "")
1096+
[[ "${tmp_uchar_1}" -gt 0 ]] && ((tmp_default_length += tmp_uchar_1))
1097+
[[ "${tmp_uchar_2}" -gt 0 ]] && ((tmp_default_length += tmp_uchar_2))
1098+
[[ "${tmp_uchar_3}" -gt 0 ]] && ((tmp_default_length += tmp_uchar_3))
1099+
[[ "${tmp_uchar_4}" -gt 0 ]] && ((tmp_default_length += tmp_uchar_4))
1100+
tmp_length=$(StringLength "${tmp_name}")
1101+
tmp_unicode_length=$(StringLength "$(echo "${tmp_name}" | sed "s|[0-9a-zA-Z -~]||g; s| ||g")")
1102+
tmp_max_length=$((tmp_default_length + tmp_unicode_length))
1103+
tmp_spaces_nums=$((((tmp_default_length - tmp_unicode_length - tmp_length)) / 2))
1104+
if [[ $tmp_spaces_nums -gt 0 ]]; then
1105+
tmp_name="${tmp_name}$(printf '%*s' ${tmp_spaces_nums} '')"
1106+
fi
1107+
printf "❖ %-${tmp_max_length}s %4s\n" "${tmp_name}" "${tmp_index})"
11031108
done
11041109
else
11051110
for ((i = 0; i < ${#list_arr[@]}; i++)); do
1106-
tmp_mirror_name="${list_arr[i]%@*}"
1107-
tmp_mirror_url="${list_arr[i]#*@}"
1108-
arr_num=$((i + 1))
1109-
echo -e "$arr_num. ${tmp_mirror_url} | ${tmp_mirror_name}"
1111+
tmp_name="${list_arr[i]%@*}"
1112+
tmp_index=$((i + 1))
1113+
echo -e "$tmp_index. ${tmp_name}"
11101114
done
11111115
fi
11121116
}
@@ -1174,13 +1178,13 @@ function choose_mirrors() {
11741178
local mirror_list_name mirror_list_print_length
11751179
if [[ "${USE_ABROAD_SOURCE}" = "true" ]]; then
11761180
mirror_list_name="mirror_list_abroad"
1177-
mirror_list_print_length=60
1181+
mirror_list_print_length=56
11781182
elif [[ "${USE_EDU_SOURCE}" = "true" ]]; then
11791183
mirror_list_name="mirror_list_edu"
1180-
mirror_list_print_length=31
1184+
mirror_list_print_length=32
11811185
else
11821186
mirror_list_name="mirror_list_default"
1183-
mirror_list_print_length=31
1187+
mirror_list_print_length=32
11841188
fi
11851189
11861190
if [[ "${CAN_USE_ADVANCED_INTERACTIVE_SELECTION}" == "true" ]]; then
@@ -1189,8 +1193,9 @@ function choose_mirrors() {
11891193
SOURCE="${_SELECT_RESULT#*@}"
11901194
echo -e "\n${GREEN}${PLAIN} ${BOLD}${_SELECT_RESULT%@*}${PLAIN}" | sed "s| · | |g"
11911195
else
1192-
print_mirrors_list "${mirror_list_name}" $mirror_list_print_length
1193-
local CHOICE=$(echo -e "\n${BOLD}└─ 请选择并输入你想使用的软件源 [ 1-$(eval echo \${#$mirror_list_name[@]}) ]:${PLAIN}")
1196+
echo ''
1197+
print_mirrors_list "${mirror_list_name}" "${mirror_list_print_length}"
1198+
local CHOICE="$(echo -e "\n${BOLD}└─ 请选择并输入你想使用的软件源 [ 1-$(eval echo \${#${mirror_list_name}[@]}) ]:${PLAIN}")"
11941199
while true; do
11951200
read -rp "${CHOICE}" INPUT
11961201
case "${INPUT}" in
@@ -3188,14 +3193,14 @@ function animate_exec() {
31883193
echo "${line}"
31893194
return
31903195
fi
3191-
local non_ascii_count=$(echo "${line// /}" | sed "s|[0-9a-zA-Z\.\=\:\_\(\)\'\"-\/\!·]||g;" | wc -m)
3196+
local non_ascii_count=$(echo "${line}" | sed "s|[0-9a-zA-Z -~]||g; s| ||g" | wc -m)
31923197
local total_length=${#line}
31933198
local display_length=$((total_length + non_ascii_count))
31943199
local quote_count=0
3195-
[[ $(echo "${line}" | grep -c "") -gt 0 ]] && quote_count=$((quote_count + $(echo "${line}" | grep -c "“")))
3196-
[[ $(echo "${line}" | grep -c "") -gt 0 ]] && quote_count=$((quote_count + $(echo "${line}" | grep -c "”")))
3197-
[[ $(echo "${line}" | grep -c "") -gt 0 ]] && quote_count=$((quote_count + $(echo "${line}" | grep -c "‘")))
3198-
[[ $(echo "${line}" | grep -c "") -gt 0 ]] && quote_count=$((quote_count + $(echo "${line}" | grep -c "’")))
3200+
[[ $(echo "${line}" | grep -c "") -gt 0 ]] && ((quote_count += "$(echo "${line}" | grep -c "“")"))
3201+
[[ $(echo "${line}" | grep -c "") -gt 0 ]] && ((quote_count += "$(echo "${line}" | grep -c "”")"))
3202+
[[ $(echo "${line}" | grep -c "") -gt 0 ]] && ((quote_count += "$(echo "${line}" | grep -c "‘")"))
3203+
[[ $(echo "${line}" | grep -c "") -gt 0 ]] && ((quote_count += "$(echo "${line}" | grep -c "’")"))
31993204
display_length=$((display_length - quote_count))
32003205
if [[ $display_length -le $display_width ]]; then
32013206
echo "$line"
@@ -3207,7 +3212,7 @@ function animate_exec() {
32073212
while [ $i -lt ${#line} ]; do
32083213
local char="${line:$i:1}"
32093214
local char_width=1
3210-
if ! [[ "$char" =~ [0-9a-zA-Z\.\=\:\_\(\)\'\"-\/\!·] ]]; then
3215+
if ! [[ "$char" =~ [0-9a-zA-Z\.\=\:\_\(\)\'\"\-\/\!\·] ]]; then
32113216
if [[ "$char" != "" && "$char" != "" && "$char" != "" && "$char" != "" ]]; then
32123217
char_width=2
32133218
fi

DockerInstallation.sh

Lines changed: 49 additions & 43 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
#!/bin/bash
22
## Author: SuperManito
3-
## Modified: 2025-09-28
3+
## Modified: 2025-10-09
44
## License: MIT
55
## GitHub: https://github.com/SuperManito/LinuxMirrors
66
## Website: https://linuxmirrors.cn
@@ -22,7 +22,7 @@ mirror_list_docker_ce=(
2222
"重庆邮电大学@mirrors.cqupt.edu.cn/docker-ce"
2323
"中国科学技术大学@mirrors.ustc.edu.cn/docker-ce"
2424
"中国科学院软件研究所@mirror.iscas.ac.cn/docker-ce"
25-
"官方@download.docker.com"
25+
"官方源@download.docker.com"
2626
)
2727

2828
## Docker Registry 仓库列表
@@ -657,42 +657,46 @@ function collect_system_info() {
657657
function choose_mirrors() {
658658
## 打印软件源列表
659659
function print_mirrors_list() {
660-
local tmp_mirror_name tmp_mirror_url arr_num default_length tmp_length tmp_spaces_nums a i j
661-
## 计算字符串长度
660+
local tmp_name tmp_index i j
662661
function StringLength() {
663662
local text=$1
664663
echo "${#text}"
665664
}
666-
echo -e ''
667665

668666
local list_arr=()
669667
local list_arr_sum="$(eval echo \${#$1[@]})"
670-
for ((a = 0; a < $list_arr_sum; a++)); do
671-
list_arr[$a]="$(eval echo \${$1[a]})"
668+
for ((i = 0; i < $list_arr_sum; i++)); do
669+
list_arr[$i]="$(eval echo \${$1[i]})"
672670
done
671+
local name_width=${2:-"30"}
673672
if command_exists printf; then
673+
local tmp_uchar_1 tmp_uchar_2 tmp_uchar_3 tmp_uchar_4 tmp_default_length tmp_length tmp_unicode_length tmp_spaces_nums tmp_max_length
674674
for ((i = 0; i < ${#list_arr[@]}; i++)); do
675-
tmp_mirror_name=$(echo "${list_arr[i]}" | awk -F '@' '{print$1}')
676-
# tmp_mirror_url=$(echo "${list_arr[i]}" | awk -F '@' '{print$2}')
677-
arr_num=$((i + 1))
678-
default_length=${2:-"30"}
679-
[[ $(echo "${tmp_mirror_name}" | grep -c "") -gt 0 ]] && let default_length+=$(echo "${tmp_mirror_name}" | grep -c "")
680-
[[ $(echo "${tmp_mirror_name}" | grep -c "") -gt 0 ]] && let default_length+=$(echo "${tmp_mirror_name}" | grep -c "")
681-
[[ $(echo "${tmp_mirror_name}" | grep -c "") -gt 0 ]] && let default_length+=$(echo "${tmp_mirror_name}" | grep -c "")
682-
[[ $(echo "${tmp_mirror_name}" | grep -c "") -gt 0 ]] && let default_length+=$(echo "${tmp_mirror_name}" | grep -c "")
683-
tmp_length=$(StringLength $(echo "${tmp_mirror_name}" | sed "s| ||g" | sed "s|[0-9a-zA-Z\.\=\:\_\(\)\'\"-\/\!·]||g;"))
684-
tmp_spaces_nums=$(($(($default_length - ${tmp_length} - $(StringLength "${tmp_mirror_name}"))) / 2))
685-
for ((j = 1; j <= ${tmp_spaces_nums}; j++)); do
686-
tmp_mirror_name="${tmp_mirror_name} "
687-
done
688-
printf "❖ %-$(($default_length + ${tmp_length}))s %4s\n" "${tmp_mirror_name}" "$arr_num)"
675+
tmp_name="$(echo "${list_arr[i]}" | awk -F '@' '{print$1}')"
676+
tmp_index=$((i + 1))
677+
tmp_default_length="${name_width}"
678+
tmp_uchar_1=$(echo "${tmp_name}" | grep -c "")
679+
tmp_uchar_2=$(echo "${tmp_name}" | grep -c "")
680+
tmp_uchar_3=$(echo "${tmp_name}" | grep -c "")
681+
tmp_uchar_4=$(echo "${tmp_name}" | grep -c "")
682+
[[ "${tmp_uchar_1}" -gt 0 ]] && ((tmp_default_length += tmp_uchar_1))
683+
[[ "${tmp_uchar_2}" -gt 0 ]] && ((tmp_default_length += tmp_uchar_2))
684+
[[ "${tmp_uchar_3}" -gt 0 ]] && ((tmp_default_length += tmp_uchar_3))
685+
[[ "${tmp_uchar_4}" -gt 0 ]] && ((tmp_default_length += tmp_uchar_4))
686+
tmp_length=$(StringLength "${tmp_name}")
687+
tmp_unicode_length=$(StringLength "$(echo "${tmp_name}" | sed "s|[0-9a-zA-Z -~]||g; s| ||g")")
688+
tmp_max_length=$((tmp_default_length + tmp_unicode_length))
689+
tmp_spaces_nums=$((((tmp_default_length - tmp_unicode_length - tmp_length)) / 2))
690+
if [[ $tmp_spaces_nums -gt 0 ]]; then
691+
tmp_name="${tmp_name}$(printf '%*s' ${tmp_spaces_nums} '')"
692+
fi
693+
printf "❖ %-${tmp_max_length}s %4s\n" "${tmp_name}" "${tmp_index})"
689694
done
690695
else
691696
for ((i = 0; i < ${#list_arr[@]}; i++)); do
692-
tmp_mirror_name="${list_arr[i]%@*}"
693-
tmp_mirror_url="${list_arr[i]#*@}"
694-
arr_num=$((i + 1))
695-
echo -e "$arr_num. ${tmp_mirror_url} | ${tmp_mirror_name}"
697+
tmp_name="${list_arr[i]%@*}"
698+
tmp_index=$((i + 1))
699+
echo -e "$tmp_index. ${tmp_name}"
696700
done
697701
fi
698702
}
@@ -743,11 +747,11 @@ function choose_mirrors() {
743747
local arch="${DEVICE_ARCH}"
744748
local date_time time_zone
745749
date_time="$(date "+%Y-%m-%d %H:%M")"
746-
timezone="$(timedatectl status 2>/dev/null | grep "Time zone" | awk -F ':' '{print$2}' | awk -F ' ' '{print$1}')"
750+
time_zone="$(timedatectl status 2>/dev/null | grep "Time zone" | awk -F ':' '{print$2}' | awk -F ' ' '{print$1}')"
747751
748752
echo -e ''
749753
echo -e "运行环境 ${BLUE}${system_name} ${arch}${PLAIN}"
750-
echo -e "系统时间 ${BLUE}${date_time} ${timezone}${PLAIN}"
754+
echo -e "系统时间 ${BLUE}${date_time} ${time_zone}${PLAIN}"
751755
}
752756
753757
[[ "${PURE_MODE}" != "true" ]] && print_title
@@ -761,10 +765,11 @@ function choose_mirrors() {
761765
SOURCE="${_SELECT_RESULT#*@}"
762766
echo -e "\n${GREEN}${PLAIN} ${BOLD}Docker CE: ${_SELECT_RESULT%@*}${PLAIN}"
763767
else
764-
print_mirrors_list "${mirror_list_name}" 38
765-
local CHOICE_B=$(echo -e "\n${BOLD}└─ 请选择并输入你想使用的 Docker CE 源 [ 1-$(eval echo \${#$mirror_list_name[@]}) ]:${PLAIN}")
768+
echo ''
769+
print_mirrors_list "${mirror_list_name}" 39
770+
local CHOICE_B="$(echo -e "\n${BOLD}└─ 请选择并输入你想使用的 Docker CE 源 [ 1-$(eval echo \${#${mirror_list_name}[@]}) ]:${PLAIN}")"
766771
while true; do
767-
read -p "${CHOICE_B}" INPUT
772+
read -rp "${CHOICE_B}" INPUT
768773
case "${INPUT}" in
769774
[1-9] | [1-9][0-9] | [1-9][0-9][0-9])
770775
local tmp_source="$(eval echo \${${mirror_list_name}[$(($INPUT - 1))]})"
@@ -796,10 +801,11 @@ function choose_mirrors() {
796801
SOURCE_REGISTRY="${_SELECT_RESULT#*@}"
797802
echo -e "\n${GREEN}${PLAIN} ${BOLD}Docker Registry: $(echo "${_SELECT_RESULT%@*}" | sed 's|(推荐)||g')${PLAIN}"
798803
else
799-
print_mirrors_list "${mirror_list_name}" 44
800-
local CHOICE_C=$(echo -e "\n${BOLD}└─ 请选择并输入你想使用的 Docker Registry 源 [ 1-$(eval echo \${#$mirror_list_name[@]}) ]:${PLAIN}")
804+
echo ''
805+
print_mirrors_list "${mirror_list_name}" 45
806+
local CHOICE_C="$(echo -e "\n${BOLD}└─ 请选择并输入你想使用的 Docker Registry 源 [ 1-$(eval echo \${#${mirror_list_name}[@]}) ]:${PLAIN}")"
801807
while true; do
802-
read -p "${CHOICE_C}" INPUT
808+
read -rp "${CHOICE_C}" INPUT
803809
case "${INPUT}" in
804810
[1-9] | [1-9][0-9] | [1-9][0-9][0-9])
805811
local tmp_source="$(eval echo \${${mirror_list_name}[$(($INPUT - 1))]})"
@@ -1198,8 +1204,8 @@ function install_docker_engine() {
11981204
echo -e "\n${GREEN} --------- 请选择你要安装的版本,如:28.3.0 ---------- ${PLAIN}\n"
11991205
cat $File_DockerVersionTmp
12001206
while true; do
1201-
local CHOICE=$(echo -e "\n${BOLD}└─ 请根据上面的列表,选择并输入你想要安装的具体版本号:${PLAIN}\n")
1202-
read -p "${CHOICE}" target_docker_version
1207+
local CHOICE="$(echo -e "\n${BOLD}└─ 请根据上面的列表,选择并输入你想要安装的具体版本号:${PLAIN}\n")"
1208+
read -rp "${CHOICE}" target_docker_version
12031209
echo ''
12041210
cat $File_DockerVersionTmp | grep -Eqw "${target_docker_version}"
12051211
if [ $? -eq 0 ]; then
@@ -1283,7 +1289,7 @@ function install_docker_engine() {
12831289
fi
12841290
else
12851291
local CHOICE_A="$(echo -e "\n${BOLD}└─ ${ask_text} [Y/n] ${PLAIN}")"
1286-
read -p "${CHOICE_A}" INPUT
1292+
read -rp "${CHOICE_A}" INPUT
12871293
[[ -z "${INPUT}" ]] && INPUT=Y
12881294
case $INPUT in
12891295
[Yy] | [Yy][Ee][Ss])
@@ -1361,7 +1367,7 @@ function change_docker_registry_mirror() {
13611367
fi
13621368
else
13631369
local CHOICE_BACKUP="$(echo -e "\n${BOLD}└─ ${ask_text} [Y/n] ${PLAIN}")"
1364-
read -p "${CHOICE_BACKUP}" INPUT
1370+
read -rp "${CHOICE_BACKUP}" INPUT
13651371
[[ -z "${INPUT}" ]] && INPUT=Y
13661372
case $INPUT in
13671373
[Yy] | [Yy][Ee][Ss]) ;;
@@ -1722,14 +1728,14 @@ function animate_exec() {
17221728
echo "${line}"
17231729
return
17241730
fi
1725-
local non_ascii_count=$(echo "${line// /}" | sed "s|[0-9a-zA-Z\.\=\:\_\(\)\'\"-\/\!·]||g;" | wc -m)
1731+
local non_ascii_count=$(echo "${line}" | sed "s|[0-9a-zA-Z -~]||g; s| ||g" | wc -m)
17261732
local total_length=${#line}
17271733
local display_length=$((total_length + non_ascii_count))
17281734
local quote_count=0
1729-
[[ $(echo "${line}" | grep -c "") -gt 0 ]] && quote_count=$((quote_count + $(echo "${line}" | grep -c "“")))
1730-
[[ $(echo "${line}" | grep -c "") -gt 0 ]] && quote_count=$((quote_count + $(echo "${line}" | grep -c "”")))
1731-
[[ $(echo "${line}" | grep -c "") -gt 0 ]] && quote_count=$((quote_count + $(echo "${line}" | grep -c "‘")))
1732-
[[ $(echo "${line}" | grep -c "") -gt 0 ]] && quote_count=$((quote_count + $(echo "${line}" | grep -c "’")))
1735+
[[ $(echo "${line}" | grep -c "") -gt 0 ]] && ((quote_count += "$(echo "${line}" | grep -c "“")"))
1736+
[[ $(echo "${line}" | grep -c "") -gt 0 ]] && ((quote_count += "$(echo "${line}" | grep -c "”")"))
1737+
[[ $(echo "${line}" | grep -c "") -gt 0 ]] && ((quote_count += "$(echo "${line}" | grep -c "‘")"))
1738+
[[ $(echo "${line}" | grep -c "") -gt 0 ]] && ((quote_count += "$(echo "${line}" | grep -c "’")"))
17331739
display_length=$((display_length - quote_count))
17341740
if [[ $display_length -le $display_width ]]; then
17351741
echo "$line"
@@ -1741,7 +1747,7 @@ function animate_exec() {
17411747
while [ $i -lt ${#line} ]; do
17421748
local char="${line:$i:1}"
17431749
local char_width=1
1744-
if ! [[ "$char" =~ [0-9a-zA-Z\.\=\:\_\(\)\'\"-\/\!·] ]]; then
1750+
if ! [[ "$char" =~ [0-9a-zA-Z\.\=\:\_\(\)\'\"\-\/\!\·] ]]; then
17451751
if [[ "$char" != "" && "$char" != "" && "$char" != "" && "$char" != "" ]]; then
17461752
char_width=2
17471753
fi

0 commit comments

Comments
 (0)