blob: d95a245628ea138dca6af838eb566ceb01d095a6 (
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
|
#!/bin/sh
# Set up a working environment for Advent of Code (https://adventofcode.com/).
# Requires tmux, lynx, curl and a valid AOC_SESSION_COOKIE session cookie.
# usage: aoc [yyyy nn]
# If yyyy (year) and nn (day, with leading zero if single digit) are not
# specified, the current year and day are used.
editor="vi a.py"
basedir="$HOME/src/aoc"
lynx_cookie_file="$(mktemp)"
clibrowser="lynx -cookie_file=$lynx_cookie_file"
year="${1:-$(date +'%Y')}"
day="${2:-$(date +'%d')}"
daynozero="$(echo "$day" | sed 's/^0//')"
cd "$basedir/$year/$day"
# Download the puzzle input and save it to input.txt
if [ ! -e input.txt ]; then
url="https://adventofcode.com/$year/day/$daynozero/input"
curl "$url" -H "cookie: session=$AOC_SESSION_COOKIE" -o input.txt
fi
# Download the problem statement page and split out the code blocks
url="https://adventofcode.com/$year/day/$daynozero"
curl "$url" | sed -n '/<pre><code>/,/<\/code><\/pre>/ p' | (\
i=1
rm -f "code-$i.txt"
while read line; do
if [ "$line" = "</code></pre>" ]; then
i=$((i + 1))
rm -f "code-$i.txt"
else
echo "$line" | sed 's/<.*>//g' >> "code-$i.txt"
fi
done
)
# Open a tmux session with lynx in its own windows, and an editor and a
# terminal in split view.
printf 'adventofcode.com\tFALSE\t/\tTRUE\t2079722976\tsession\t%s' \
"$AOC_SESSION_COOKIE" > "$lynx_cookie_file"
tmux new-session \; \
send-keys "$editor" C-m \; \
split-window -h \; \
select-pane -t 0 \; \
new-window \; \
send-keys "$clibrowser $url" C-m \;
|