blob: 2ea1dc2e553b0f81bb090e3bf8963f70f3b66691 (
plain) (
blame)
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
|
#!/usr/bin/env bash
source "$HOME/scripts/modules/utils.sh";
SCH_PATH="$HOME/.config/vimwiki/schedule/";
SCH_TAG="SCH_AUTO_GENERATED";
CRON_PATH="$HOME/.config/crontab/crontab";
get_schedule_files() {
ls "$SCH_PATH" | sed -e '/index.md$/d' | awk "{print \"$SCH_PATH\" \$0}";
}
get_time() { awk -F'|' '{print $2}' | trim_line; }
get_label() { awk -F'|' '{print $3}' | trim_line; }
get_level() {
local l=$(awk -F'|' '{print $4}' | trim_line);
case $l in
1) echo "critical" ;;
2) echo "normal" ;;
3) echo "low" ;;
*) echo "" ;;
esac
}
parse_schedule() {
local days="$1";
sed -e '/^#/d' -e '/^\s*$/d' | while read line; do
local time=$(echo "$line" | get_time);
local level=$(echo "$line" | get_level);
if [[ ! $time == "-" ]] && [[ ! $level == "" ]]; then
local label=$(echo "$line" | get_label);
local time_cron=$(echo $time | awk '{print $2 " " $1}');
# TODO: Use notify sub command
local command="notify-send '$label' -u $level -a Schedule -t 10000";
echo "$time_cron $days $command ##$SCH_TAG";
fi;
done;
}
generate_crontab() {
get_schedule_files | while read file; do
days=$(cat $file | awk -F'#' '/^# / {print $2}' | head -n 1 | trim_line)
parse_schedule "$days" < $file;
done
}
update_crontab() {
cat $CRON_PATH | sed -e "/##$CRON_TAG/d";
generate_crontab;
}
# TODO: Make generate and notify sub commands
# case "$1" in
# *) ;;
# esac
tmpfile=$(mktemp /tmp/crontemp.XXX);
update_crontab > $tmpfile;
cat $tmpfile > $CRON_PATH;
rm $tmpfile;
|