public-image-mirror/hack/fmt-image-match.sh

61 lines
1.3 KiB
Bash
Executable File

#!/usr/bin/env bash
function check_match() {
local image=$1
local lines=$2
for line in ${lines}; do
if [[ "${line}" == *"/**" ]]; then
if [[ "${image}" == "${line%\*\*}"* ]]; then
return
fi
elif [[ "${line}" == *"/*" ]]; then
if [[ "${image}" == "${line%\*}"* ]]; then
if [[ "${image#"${line%\*}"}" != *"/"* ]]; then
return
fi
fi
fi
done
echo "${image}"
}
function check_match_more() {
local image=$1
local lines=$2
for line in ${lines}; do
if [[ "${line}" == *"/**" ]]; then
if [[ "${image}" == "${line%\*\*}"* ]]; then
return
fi
fi
done
echo "${image}"
}
function format() {
local file=$1
local lines="$(cat "${file}")"
for line in ${lines}; do
if [[ "${line}" != *"*" ]]; then
check_match "${line}" "${lines}"
fi
done
for line in ${lines}; do
if [[ "${line}" == *"/**" ]]; then
echo "${line}"
elif [[ "${line}" == *"/*" ]]; then
check_match_more "${line}" "${lines}"
fi
done
}
export LC_ALL=C
file=$1
format "${file}" |
sort -u |
grep -v '^$' >$1.tmp && mv $1.tmp $1