blob: 0f8fee40e79bee025da6d3564ec5ea8c892b67ac (
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
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
|
#!/bin/bash
# SPDX-License-Identifier: GPL-2.0
#
# Schedule hack for kernel review rotation, dumped as .csv file which can
# then be imported into Google calendar or elsewhere.
#
# Copyright (C) 2022 Daniel Borkmann <daniel@iogearbox.net>
source $(dirname $0)/lib.sh
reviewer=( Alexei Daniel Andrii Martin Song Yonghong John Stanislav Hao Jiri )
out="schedule.csv"
rstart=$(date --iso-8601)
weeks=$(expr 2 '*' ${#reviewer[@]})
usage()
{
cat <<-EOF
usage: pw-schedule [-h] [-o FILE] [-s START_DATE] [-n WEEKS]
defaults:
FILE := $out
START_DATE := $rstart
WEEKS := $weeks
EOF
exit
}
shuffle()
{
RANDOM=$$
declare -a array=($@)
declare -i k n=${#array[@]}
while [ $n -ge 0 ]
do
let "k = RANDOM % (n + 1)"
reviewer_sch+=(${array[$k]})
array[k]=${array[$n]}
array[n]=$reviewer_sch
let "n--"
done
}
schedule_dump_cover()
{
echo "Subject,Start Date,End Date" >> $out
}
while true; do
case "$1" in
-o | --output ) out="$2"; shift 2 ;;
-n | --weeks ) weeks="$2"; shift 2 ;;
-s | --start ) rstart="$2"; shift 2 ;;
-h | --help ) usage; break ;;
-- ) shift; break ;;
* ) break ;;
esac
done
rm $out 2> /dev/null
shuffle ${reviewer[@]}
schedule_dump_cover
for i in $(seq 0 1 $(expr $weeks - 1))
do
dev=${reviewer_sch[ $i % ${#reviewer[@]} ]}
day=$(date --date "$rstart" '+%w')
stride=2
if [ "$day" = "1" ]; then # day 1 is Monday
stride=3
fi
rend=$(date --iso-8601 --date "$rstart +$stride days")
rs=$(date --iso-8601 --date "$rstart")
re=$(date --iso-8601 --date "$rend")
echo "BPF Reviewer: $dev,$rs,$re" >> $out
if [ $stride -eq 2 ]; then
rend=$(date --iso-8601 --date "$rend +$stride days")
fi
rstart=$rend
done
exit 0
|