summaryrefslogtreecommitdiff
path: root/aoc-cacheclear
blob: 3ce865b3d5ca9a4e20c23dcd8921c7baaf9a4a4b (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
#!/bin/bash
set -euo pipefail

AOC_DIR="${AOC_DIR:-$HOME/.aoc}"
CACHE_DIR="$AOC_DIR/cache"

usage() {
    pname=$(basename "$0")
    echo "Usage: $pname <year> <day?>" >&2
    echo "       $pname all"
    exit 1
}

verify_int() {
    if ! [[ "$1" =~ ^[0-9]+$ ]]; then
        echo "'$1' is not an integer" >&2
        usage
    fi
}

if [ $# -gt 2 ] || [ $# -lt 1 ]; then
    usage
fi

if [ "$1" = all ]; then
    if [ ! -d "$CACHE_DIR" ]; then
        echo "No cache present" >&2
        exit 1
    fi
    echo "Clearing full cache" >&2
    rm -rf "$CACHE_DIR"
    exit
fi

year="$1"
verify_int "$year"
year_cache_dir="$CACHE_DIR/$year"

if [ $# -eq 1 ]; then
    if [ ! -d "$year_cache_dir" ]; then
        echo "No cache for $year present" >&2
        exit 1
    fi
    echo "Clearing cache for year $year" >&2
    rm -rf "$year_cache_dir"
    exit
fi

day="$2"
verify_int "$day"
cache_file=$year_cache_dir/d$day.in
if [ ! -f "$cache_file" ]; then
    echo "No cache for $year day $day present"
    exit 1
fi
echo "Clearing cache for $year day $day" >&2
rm $cache_file