mirror of
https://github.com/pentoo/pentoo-overlay
synced 2025-12-20 15:24:26 +01:00
133 lines
2.7 KiB
Bash
Executable file
133 lines
2.7 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
|
|
TARGET="${1:-go.sum}"
|
|
MODULES=()
|
|
WHITELIST=(
|
|
"github.com"
|
|
"bitbucket.org"
|
|
)
|
|
|
|
function in_whitelist() {
|
|
local module="${1}"
|
|
local state=0
|
|
|
|
for w in ${WHITELIST[@]}; do
|
|
[[ "${module}" == ${w}/* ]] && state=1
|
|
done
|
|
|
|
if [ ${state} -eq 0 ]; then
|
|
return 1
|
|
fi
|
|
}
|
|
|
|
function parse_gosum() {
|
|
local gosum_file="${1}"
|
|
local _prefix raw
|
|
|
|
IFS=$'\n'
|
|
for raw in $(cat "${gosum_file}" \
|
|
| awk '$1!=f{print;f=$1}' \
|
|
| sed -E "s/[[:space:]](v?([0-9]{1,}\.)?+[0-9]{1,}((\-r|_rc|_beta|_alpha)[0-9]{1,}?)?)[-+\/]/ \1 \2/")
|
|
do
|
|
module="$(echo ${raw} | cut -d' ' -f1)"
|
|
version="$(echo ${raw} | cut -d' ' -f2)"
|
|
revision="$(echo ${raw} | cut -d' ' -f3 | sed -E "s/^([a-z0-9.]{1,}-)([a-z0-9]{1,7}).*/\2/")"
|
|
|
|
if ! in_whitelist "${module}"; then
|
|
_prefix="(checkme) "
|
|
else
|
|
_prefix=""
|
|
fi
|
|
|
|
[[ "${version}" == *0.0.0 ]] \
|
|
&& MODULES+=( "${_prefix}${module} ${revision}" ) \
|
|
|| MODULES+=( "${_prefix}${module} ${version}" )
|
|
done
|
|
}
|
|
|
|
function parse_gopkglock() {
|
|
local pkglock_file="${1}"
|
|
local _prefix raw
|
|
|
|
IFS=$':'
|
|
for raw in $(cat "${pkglock_file}" \
|
|
| tr -d ' ' \
|
|
| awk -F'=' '$1~/^name$/{printf(":%s ",$2)};$1~/^revision$|^version$/{printf("%s ",$2)}' \
|
|
| sed "s/\"//g")
|
|
do
|
|
module="$(echo ${raw} | cut -d' ' -f1)"
|
|
version="$(echo ${raw} | cut -d' ' -f3)"
|
|
revision="$(echo ${raw} | cut -d' ' -f2 | cut -c1-7)"
|
|
|
|
if ! in_whitelist "${module}"; then
|
|
_prefix="(checkme) "
|
|
else
|
|
_prefix=""
|
|
fi
|
|
|
|
if ! [[ -z "${module}" ]]; then
|
|
[[ -z "${version}" ]] \
|
|
&& MODULES+=( "${_prefix}${module} ${revision}" ) \
|
|
|| MODULES+=( "${_prefix}${module} ${version}" )
|
|
fi
|
|
done
|
|
}
|
|
|
|
function parse_gopkgtoml() {
|
|
local pkgtoml_file="${1}"
|
|
local _prefix raw
|
|
|
|
IFS=$':'
|
|
for raw in $(cat "${pkgtoml_file}" \
|
|
| tr -d ' ' \
|
|
| awk -F'=' '$1~/^name$/{printf(":%s ",$2)};$1~/^revision$|^version$/{printf("%s ",$2)}' \
|
|
| sed -e "s/\"//g")
|
|
do
|
|
module="$(echo ${raw} | cut -d' ' -f1)"
|
|
version="$(echo ${raw} | cut -d' ' -f2)"
|
|
revision="$(echo ${raw} | cut -d' ' -f3)"
|
|
|
|
if ! in_whitelist "${module}"; then
|
|
_prefix="(checkme) "
|
|
else
|
|
_prefix=""
|
|
fi
|
|
|
|
if ! [[ -z "${module}" ]]; then
|
|
[[ -z "${version}" ]] \
|
|
&& MODULES+=( "${_prefix}${module} ${revision}" ) \
|
|
|| MODULES+=( "${_prefix}${module} ${version}" )
|
|
fi
|
|
done
|
|
}
|
|
|
|
function parse_golist() {
|
|
:
|
|
}
|
|
|
|
function parse_gomod() {
|
|
:
|
|
}
|
|
|
|
function merge() {
|
|
:
|
|
}
|
|
|
|
if ! [ -f "${TARGET}" ]; then
|
|
echo "${TARGET} — is not found!"
|
|
exit 1
|
|
fi
|
|
|
|
case "$(basename "${TARGET}")" in
|
|
*.sum) parse_gosum "${TARGET}";;
|
|
*.lock) parse_gopkglock "${TARGET}";;
|
|
*.toml) parse_gopkgtoml "${TARGET}";;
|
|
*.list) parse_golist "${TARGET}";;
|
|
*.mod) parse_gomod "${TARGET}";;
|
|
esac
|
|
|
|
echo -e "EGO_VENDOR=("
|
|
for mod in ${MODULES[@]}; do
|
|
echo -e "\t\"${mod}\""
|
|
done
|
|
echo -e ")"
|