From 9d96d182e8652d937af9bce12d2b55dc15314878 Mon Sep 17 00:00:00 2001 From: Yury Martynov Date: Fri, 28 Jun 2019 16:05:14 +0300 Subject: [PATCH] scripts: ego_vendor_generator.sh minor fixes --- scripts/ego_vendor_generator.sh | 91 ++++++++++++++++++++++++++------- 1 file changed, 72 insertions(+), 19 deletions(-) diff --git a/scripts/ego_vendor_generator.sh b/scripts/ego_vendor_generator.sh index 1486c60d5..68fd8a52b 100755 --- a/scripts/ego_vendor_generator.sh +++ b/scripts/ego_vendor_generator.sh @@ -26,7 +26,15 @@ function parse_gosum() { IFS=$'\n' for raw in $(cat "${gosum_file}" \ - | awk '$1!=f{print;f=$1}' \ + | awk '{pn[FNR]=$1; pv[$1]=$2} + END { + for ( n in pn ) { + if ( pn[n] != f ) { + printf("%s %s\n", pn[n], pv[pn[n]]) + f=pn[n] + } + } + }' \ | 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)" @@ -39,9 +47,11 @@ function parse_gosum() { _prefix="" fi - [[ "${version}" == *0.0.0 ]] \ - && MODULES+=( "${_prefix}${module} ${revision}" ) \ - || MODULES+=( "${_prefix}${module} ${version}" ) + if ! [[ -z "${module}" ]]; then + [[ "${version}" == *0.0.0 ]] \ + && MODULES+=( "${_prefix}${module} ${revision}" ) \ + || MODULES+=( "${_prefix}${module} ${version}" ) + fi done } @@ -51,9 +61,8 @@ function parse_gopkglock() { 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") + | tr -d "[:blank:]\"" \ + | awk -F'=' '$1~/^name$/{printf(":%s ",$2)};$1~/^revision$|^version$/{printf("%s ",$2)}') do module="$(echo ${raw} | cut -d' ' -f1)" version="$(echo ${raw} | cut -d' ' -f3)" @@ -79,9 +88,8 @@ function parse_gopkgtoml() { 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") + | tr -d "[:blank:]\"" \ + | awk -F'=' '$1~/^name$/{printf(":%s ",$2)};$1~/^revision$|^version$/{printf("%s ",$2)}') do module="$(echo ${raw} | cut -d' ' -f1)" version="$(echo ${raw} | cut -d' ' -f2)" @@ -101,17 +109,62 @@ function parse_gopkgtoml() { done } -function parse_golist() { - : -} - function parse_gomod() { - : + local gomod_file="${1}" + local _prefix raw + + IFS=$'\n' + for raw in $(cat "${gomod_file}" \ + | awk -v'm=0' ' + m==0&&$1" "$2" "$3~/^require \"?(.*) (.*)\"?/&&$1" "$2!~/^require \($/ { m=1 } + m==0&&$1" "$2~/^require \($/ { strl=FNR; m=2 } + m==2&&$1~/^\)$/ { endl=FNR } + m==1&&$1~/^require$/&&$2!="" { pn[FNR]=$2; pv[$2]=$3 } + m==2 { pn[FNR]=$1; pv[$1]=$2 } + END { + switch (m) { + case 1: + for (n in pn) + printf("%s %s\n", pn[n], pv[pn[n]]) + break + case 2: + for (n in pn) { + if (n > strl) { + printf("%s %s\n", pn[n], pv[pn[n]]) + if (n < endl) break + } + } + break + } + }' \ + | sed -E "s/^[[:blank:]]\"?//;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 + + if ! [[ -z "${module}" ]]; then + [[ "${version}" == *0.0.0 ]] \ + && MODULES+=( "${_prefix}${module} ${revision}" ) \ + || MODULES+=( "${_prefix}${module} ${version}" ) + fi + done } -function merge() { - : -} +#function parse_golist() { +# : +#} +# +#function merge() { +# #sort -k1 -k2 -V -r +# : +#} if ! [ -f "${TARGET}" ]; then echo "${TARGET} — is not found!" @@ -122,7 +175,7 @@ case "$(basename "${TARGET}")" in *.sum) parse_gosum "${TARGET}";; *.lock) parse_gopkglock "${TARGET}";; *.toml) parse_gopkgtoml "${TARGET}";; - *.list) parse_golist "${TARGET}";; +# *.list) parse_golist "${TARGET}";; *.mod) parse_gomod "${TARGET}";; esac