Skip to content

Commit 7db9959

Browse files
authored
[dev-tools] Script to find recent top committers for a module (elastic#19053)
* Init checkin * Adding set * Removing unnecessary variable * Breaking up into functions
1 parent b82829b commit 7db9959

File tree

1 file changed

+58
-0
lines changed

1 file changed

+58
-0
lines changed

dev-tools/module_committers

Lines changed: 58 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,58 @@
1+
#!/bin/bash
2+
3+
set -euo pipefail
4+
5+
#
6+
# Finds modules matching given string and prints out their recent top committers.
7+
#
8+
# Usage:
9+
# module_devs <module name, partial ok>
10+
#
11+
12+
find_beat_dirs() {
13+
find $beats_base_dir -type d -iname \*beat -maxdepth 2 | grep -v libbeat
14+
}
15+
16+
find_module_dirs() {
17+
beat_dirs="$1"
18+
module_name="$2"
19+
20+
module_dirs=""
21+
for beat_dir in $beat_dirs; do
22+
if [ -d "$beat_dir/module" ]; then
23+
module_dirs=$module_dirs" "$(find $beat_dir/module -type d -depth 1)
24+
fi
25+
done
26+
27+
found_dirs=""
28+
for module_dir in $module_dirs; do
29+
module=$(echo $module_dir | awk -F\/ '{ print $NF}')
30+
if [[ "$module" == *"$module_name"* ]]; then
31+
found_dirs=$found_dirs" "$module_dir
32+
fi
33+
done
34+
35+
echo "$found_dirs"
36+
}
37+
38+
print_recent_top_committers() {
39+
module_dirs="$1"
40+
for module_dir in $module_dirs; do
41+
echo "Found matching $module_dir:"
42+
cd $module_dir
43+
echo " Recent top committers:"
44+
git log --since="one year ago" --pretty=format:"%an" -- . | sort | uniq -c | sort -nr | head -3 | awk '{$1 = ""; print " -"$0}'
45+
done
46+
}
47+
48+
module_name="$1"
49+
if [ -z "$module_name" ]; then
50+
echo "Usage: module_devs <module name>"
51+
exit 1
52+
fi
53+
54+
beats_base_dir=$(cd $(dirname $BASH_SOURCE)/..; pwd)
55+
56+
beat_dirs=$(find_beat_dirs)
57+
module_dirs=$(find_module_dirs "$beat_dirs" "$module_name")
58+
print_recent_top_committers "$module_dirs"

0 commit comments

Comments
 (0)