pkg.re/essentialkaos/ek.10@v12.41.0+incompatible/.scripts/fuzz-gen.sh (about) 1 #!/bin/bash 2 3 ################################################################################ 4 5 NORM=0 6 BOLD=1 7 UNLN=4 8 RED=31 9 GREEN=32 10 YELLOW=33 11 BLUE=34 12 MAG=35 13 CYAN=36 14 GREY=37 15 DARK=90 16 17 CL_NORM="\e[0m" 18 CL_BOLD="\e[0;${BOLD};49m" 19 CL_UNLN="\e[0;${UNLN};49m" 20 CL_RED="\e[0;${RED};49m" 21 CL_GREEN="\e[0;${GREEN};49m" 22 CL_YELLOW="\e[0;${YELLOW};49m" 23 CL_BLUE="\e[0;${BLUE};49m" 24 CL_MAG="\e[0;${MAG};49m" 25 CL_CYAN="\e[0;${CYAN};49m" 26 CL_GREY="\e[0;${GREY};49m" 27 CL_DARK="\e[0;${DARK};49m" 28 CL_BL_RED="\e[1;${RED};49m" 29 CL_BL_GREEN="\e[1;${GREEN};49m" 30 CL_BL_YELLOW="\e[1;${YELLOW};49m" 31 CL_BL_BLUE="\e[1;${BLUE};49m" 32 CL_BL_MAG="\e[1;${MAG};49m" 33 CL_BL_CYAN="\e[1;${CYAN};49m" 34 CL_BL_GREY="\e[1;${GREY};49m" 35 36 ################################################################################ 37 38 main() { 39 if [[ ! $(type -P go-fuzz-build) ]] ; then 40 error "This utility require go-fuzz-build" $RED 41 exit 1 42 fi 43 44 local src src_package src_name src_path src_func output func_min 45 46 show "\nBuilding archives for packages…\n" 47 48 for src in $(find . -name "fuzz.go") ; do 49 src_package=$(dirname "$src" | sed 's#\.\/##') 50 src_path=$(echo "$src" | sed 's#\/fuzz.go##' | sed 's#\.\/##') 51 src_name=$(echo "$src_path" | sed 's#\/#-#g') 52 53 if [[ -n "$1" && "$1" != "$src_package" ]] ; then 54 continue 55 fi 56 57 while read src_func ; do 58 src_func=$(echo "$src_func" | cut -f2 -d " " | sed 's/(//') 59 60 if [[ "$src_func" == "Fuzz" ]] ; then 61 showm " ${CL_GREY}∙ ${CL_BOLD}${src_package}${CL_NORM}… " 62 output="${src_name}-fuzz.zip" 63 go-fuzz-build -o "$output" "github.com/essentialkaos/ek/${src_path}" 64 else 65 showm " ${CL_GREY}∙ ${CL_BOLD}${src_package}${CL_NORM} ${CL_GREY}($src_func)${CL_NORM}… " 66 func_min=$(echo "$src_func" | sed 's/Fuzz//' | tr '[A-Z]' '[a-z]') 67 output="${src_name}-${func_min}-fuzz.zip" 68 go-fuzz-build -func "$src_func" -o "$output" "github.com/essentialkaos/ek/${src_path}" 69 fi 70 71 if [[ $? -eq 0 ]] ; then 72 show "${CL_GREEN}✔ ${CL_DARK}($output)${CL_NORM}" 73 else 74 show "✖ " $RED 75 fi 76 77 done < <(grep -Eo '^func Fuzz.*\(' $src) 78 79 done 80 81 show "" 82 } 83 84 show() { 85 if [[ -n "$2" ]] ; then 86 echo -e "\e[${2}m${1}\e[0m" 87 else 88 echo -e "$*" 89 fi 90 } 91 92 showm() { 93 if [[ -n "$2" ]] ; then 94 echo -e -n "\e[${2}m${1}\e[0m" 95 else 96 echo -e -n "$*" 97 fi 98 } 99 100 error() { 101 show "$@" 1>&2 102 } 103 104 105 ################################################################################ 106 107 main "$@"