summaryrefslogtreecommitdiffstats
path: root/bin/stub-code
blob: 5a3bc8c2dc0b7e0b096e54164542ebbf4782b6c1 (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
#!/bin/sh
set -eu

day=${1:-$(date +%-d)}
year=${2:-$(date +%Y)}

mkdir -p src/"$year"/"$day"
cat >src/"$year"/"$day"/mod.rs <<EOF
#![allow(dead_code)]
#![allow(unused_variables)]

use crate::prelude::*;

pub struct Todo;

pub fn parse(fh: File) -> Result<Todo> {
    todo!()
}

pub fn part1(_: Todo) -> Result<i64> {
    todo!()
}

pub fn part2(_: Todo) -> Result<i64> {
    todo!()
}
EOF

perl -pi -E"\$seen_mod = 1 if /mod day$day/; if (!\$seen_mod && /NEXT MOD/) { say '#[path = \"$day/mod.rs\"]'; say 'mod day$day;'; }" src/"$year"/mod.rs
perl -pi -E"\$seen_part = 1 if /day$day::part/; if (!\$seen_part && /NEXT PART/) { say '        ($day, 1) => day$day::part1(day$day::parse(parse::data($year, $day)?)?),'; say '        ($day, 2) => day$day::part2(day$day::parse(parse::data($year, $day)?)?),'; }" src/"$year"/mod.rs