X-Git-Url: https://git.xandkar.net/?a=blobdiff_plain;f=home%2Fbin%2Ferlcode-find-calls-to-module;h=46f5d35a25f3ec78a08b5b99f9850c3c3f1b3730;hb=4cc39e2abe613081cded4c3fc23b978c2ee4ebdc;hp=8e4d9e5c081483ba0a9119c3fec1b512ede2c583;hpb=2b05907bb8c2ed2bd6b40375aedfb089416c968a;p=khome.git diff --git a/home/bin/erlcode-find-calls-to-module b/home/bin/erlcode-find-calls-to-module index 8e4d9e5..46f5d35 100755 --- a/home/bin/erlcode-find-calls-to-module +++ b/home/bin/erlcode-find-calls-to-module @@ -1,12 +1,16 @@ #! /bin/bash target_module="$1" -shift +target_fun_regex="$2" +shift 2 dirs=$@ find $dirs -type f -name '*.erl' -exec grep -Hn "\<$target_module\>:" '{}' \; \ | sed 's/%.*$//g' \ -| awk -F "${target_module}:" -v target_module="$target_module" ' +| awk \ + -F "${target_module}:" \ + -v target_module="$target_module" \ + -v target_fun_regex="$target_fun_regex" ' $1 && $2 { caller_module_file = $1 sub(":.*$", "", caller_module_file) @@ -15,9 +19,11 @@ find $dirs -type f -name '*.erl' -exec grep -Hn "\<$target_module\>:" '{}' \; \ sub("\\(.*$", "", called_function) if (called_function ~ /^[a-z][a-zA-Z_0-9]+$/) { - Calls[called_function]++ - Calls_from[caller_module_file, called_function]++ - Caller_modules[caller_module_file]++ + if (called_function ~ target_fun_regex) { + Calls[called_function]++ + Calls_from[caller_module_file, called_function]++ + Caller_modules[caller_module_file]++ + } } else { printf \ "[WARN] skipped an invalid erlang function name. File: \"%s\", function: \"%s\", original line: \"%s\"\n", \ @@ -28,18 +34,19 @@ find $dirs -type f -name '*.erl' -exec grep -Hn "\<$target_module\>:" '{}' \; \ END { indent = " " + + print "group-by-caller" for (caller_module_file in Caller_modules) { - print caller_module_file; + printf "%s%s\n", indent, caller_module_file; for (cf in Calls_from) { split(cf, call, SUBSEP); if (call[1] == caller_module_file) - printf "%s%s\n", indent, call[2] | "sort"; + printf "%s%s\n", indent indent, call[2] | "sort"; } close("sort") } - print "" - printf "Inferred API of %s:\n", target_module + print "all" for (called_function in Calls) printf "%s%s\n", indent, called_function | "sort" close("sort")