Составляем расписание аппдьюти

Сгенерировать шаблон "понедельничные даты и дни недели"
Первой датой передавать понедельник. Скрипт это не проверяет, сгенерирует шаблон от даты как есть.
bin/dt-generate-app-duty-shifts-template.sh 2021-02-22 2021-04-25

Совместить даты смен и список дежурных:
paste -d '' data/direct-app-duty-2021.shifts.txt data/app-duty-2021-01-14

Проверки инвариантов
Если в файле только одна итерация.
Проверить, что у каждого дежурного ровно 2 смены, выборка должна получиться пустая:
cat data/direct-app-duty-2021.shifts.txt |grep -v '^#' |awk '{print $3; print $4;}' |sort |uniq -c |grep -v 2
Проверить, что у каждого дежурного одна смена в начале недели и одна в конце (может не получиться, если дежурных нечетное число), выборка должна быть пустая:
cat data/direct-app-duty-2021.shifts.txt |grep -v '^#' |awk '{print $2,$3; print $2,$4;}' |sort|uniq -c| grep -v '^ *1'

Если в файле несколько итераций, выбрать нужную:
sed -n '/begin 2/,/end 2/p' data/direct-app-duty-2021.shifts.txt

Загружаем смены в abc
./bin/dt-app-duty-manage-shifts.py -s direct-app-duty --shifts-file data/direct-app-duty-2020.shifts.txt -f 2020-12-24 -t 2020-12-30 assign


Дежурство app-duty-backup
Дифф:
./bin/dt-app-duty-manage-shifts.py -s direct-app-duty-backup --shifts-file data/direct-app-duty-backup-2021.shifts.txt -f 2021-05-18 -t 2021-05-30 diff
./bin/dt-app-duty-manage-shifts.py -s direct-app-duty-backup --shifts-file data/direct-app-duty-backup-2021.shifts.txt -f 2021-05-18 -t 2021-05-30 assign


