#!/bin/sh set -eu day=${1:-$(date +%-d)} year=${2:-$(date +%Y)} cat >src/bin/"$year"/day"$day".rs < Result { todo!() } pub fn part1(_: Todo) -> Result { todo!() } pub fn part2(_: Todo) -> Result { 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