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

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

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

use advent_of_code::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!()
}

#[test]
fn test() {
    assert_eq!(
        part1(parse(parse::data($year, $day).unwrap()).unwrap()).unwrap(),
        0
    );
    assert_eq!(
        part2(parse(parse::data($year, $day).unwrap()).unwrap()).unwrap(),
        0
    );
}
EOF

perl -pi -E"\$seen_mod = 1 if /mod day$day;/; if (!\$seen_mod && /NEXT MOD/) { say 'mod day$day;'; }" src/bin/"$year"/main.rs
perl -pi -E"\$seen_part = 1 if /day!.*day$day\)/; if (!\$seen_part && /NEXT PART/) { say '        $day => advent_of_code::day!($year, opt.day, opt.puzzle, day$day),'; }" src/bin/"$year"/main.rs

perl -pi -E"\$seen_mod = 1 if /mod day$day;/; if (!\$seen_mod && /NEXT MOD/) { say '#[path = \"../src/bin/$year/day${day}.rs\"]'; say 'mod day$day;'; }" benches/"$year".rs
perl -pi -E"\$seen_day = 1 if /day!.*day$day\)/; if (!\$seen_day && /NEXT DAY/) { say 'day!($year, $day, day$day);'; }" benches/"$year".rs
perl -pi -E"\$seen_day_combined = 1 if /day_combined!.*day$day\)/; if (!\$seen_day_combined && /NEXT DAY COMBINED/) { say '            day_combined!($year, $day, day$day);'; }" benches/"$year".rs
perl -pi -E"\$seen_group = 1 if /bench_${year}day${day},/; if (!\$seen_group && /NEXT GROUP/) { say '    bench_${year}day$day,'; }" benches/"$year".rs