#!/usr/bin/env nu let current = ls | where name =~ \d\d and type == dir | get name | sort | last | default "00" let part2 = $current | path join part2 if (($current == "00") or ($part2 | path exists)) { let next = $current | into int | $in + 1 | into string | fill -a r -c '0' -w 2 let part1 = $next | path join part1 mkdir ($part1 | path join src) { package: { name: $"aoc25-($next)-1" version: "1.0.0" edition: "2024" } } | save ($part1 | path join Cargo.toml) r#'use std::fs::read_to_string; fn main() { read_to_string("../input.txt").expect("failed to open input file"); }'# | save ($part1 | path join src main.rs) } else { let part1 = $current | path join part1 mkdir $part2 open ($part1 | path join Cargo.toml) | update package.name $"aoc25-($current)-2" | save ($part2 | path join Cargo.toml) cp -r ($part1 | path join src) ($part2 | path join src) }