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
|