aboutsummaryrefslogtreecommitdiff
path: root/compute-tree-size-stats.sh
blob: 62bbb44694bb57076aed3e379176f843820b640b (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
#!/bin/sh

## SPDX-License-Identifier: CC0-1.0
##
## Copyright (C) 2025 Woj. Kosior <koszko@koszko.org>

set -e

RESULTS_PATH="$1"

if [ "$2" = "--omit-packages-with-breaking-changes" ]; then
    BAD_ROW_REG="n/a|BC-yes"
else
    BAD_ROW_REG="n/a"
fi

printf "DESCRIPTION"
for MEASURE_TYPE in $(./helper.sh --get-measure-types); do
    for AGGREGATION in MIN MAX AVG STD_DEV; do
        printf ',%s-%s' "$MEASURE_TYPE" "$AGGREGATION"
    done
done

echo

for TREE_KIND in $(./helper.sh --get-tree-kinds); do
    printf %s "$TREE_KIND" | ./helper.sh --make-tree-kind-description
    for MEASURE_TYPE in $(./helper.sh --get-measure-types); do
        COL_NAME="$TREE_KIND-$MEASURE_TYPE"
        ./helper.sh --get-csv-columns \
                    "$RESULTS_PATH" "$COL_NAME" BREAKING-CHANGES |
            grep -vE "$BAD_ROW_REG" | tail -n +2 | awk -F '[-,]' '
                BEGIN {
                    min = 999999;
                }
                // {
                    count += 1;
                    sum += $2;
                    squares_sum += ($2)^2;
                    if ($2 > max) {
                        max = $2;
                    }
                    if ($2 < min) {
                        min = $2;
                    }
                }
                END {
                    std_dev = sqrt((squares_sum - sum^2 / count) / count);
                    printf ",%d,%d,%.1f,%.1f", min, max, (sum / count), std_dev;
                }
            '
    done
    echo
done