From a9ac1c2c980af5a9a8c3c6c3452060fb216fa6b1 Mon Sep 17 00:00:00 2001 From: Thraix Date: Sat, 25 Jul 2026 19:57:11 +0200 Subject: [PATCH] Add generate_days script - Add generate_days script to generate templated files for an advent of code year. - Optimize the fetch.sh script (remove awk usage) --- .gitignore | 1 + Template.cpp | 31 +++++++++++++++++++++++++++++++ compile_flags.txt | 4 ---- fetch.sh | 8 ++++---- generate_days.sh | 23 +++++++++++++++++++++++ 5 files changed, 59 insertions(+), 8 deletions(-) create mode 100644 Template.cpp delete mode 100644 compile_flags.txt create mode 100755 generate_days.sh diff --git a/.gitignore b/.gitignore index 1b0bc5e..85e42b5 100644 --- a/.gitignore +++ b/.gitignore @@ -8,3 +8,4 @@ bin/ cookies.txt res/*/*/input.txt Makefile +compile_flags.txt diff --git a/Template.cpp b/Template.cpp new file mode 100644 index 0000000..efe7f00 --- /dev/null +++ b/Template.cpp @@ -0,0 +1,31 @@ +#include "common/aoc.h" + +namespace y$1::day$2 +{ + REGISTER_DAY($1, Day$2, std::vector, int); + + REGISTER_TEST_EXAMPLE($1, Day$2, ExampleInput, 1, 0); + REGISTER_TEST($1, Day$2, Input, 1, 0); + REGISTER_TEST_EXAMPLE($1, Day$2, ExampleInput, 2, 0); + REGISTER_TEST($1, Day$2, Input, 2, 0); + + READ_INPUT(input) + { + std::vector vec; + std::string str; + while (getline(input, str)) + { + } + return vec; + } + + OUTPUT1(input) + { + return 0; + } + + OUTPUT2(input) + { + return 0; + } +} diff --git a/compile_flags.txt b/compile_flags.txt deleted file mode 100644 index 4b01977..0000000 --- a/compile_flags.txt +++ /dev/null @@ -1,4 +0,0 @@ --xc++ --Isrc/ --std=c++17 - diff --git a/fetch.sh b/fetch.sh index c9cedfb..ed89a36 100755 --- a/fetch.sh +++ b/fetch.sh @@ -1,4 +1,4 @@ -#/bin/sh +#!/bin/sh if [ ! -e cookies.txt ]; then echo "No cookies.txt file exists" @@ -8,11 +8,11 @@ fi list=$(find -name "Day*.cpp" | awk -F '/' '{print $3 "/" $4}' | awk -F '.' '{print $1}' | sed 's/Day//g' | sort) for item in $list; do - year=$(echo $item | awk -F '/' '{print $1}') - day=$(echo $item | awk -F '/' '{print $2}') + year=${item%/*} # remove everything before / + day=${item#*/} # remove everything after / dir="res/$year/day$day/input.txt" if [ ! -e $dir ]; then - webitem=$(echo $day | sed 's/^0//g') + webitem=${day#0} echo "Fetching $dir" tmp_file=$(mktemp) HTTP_CODE=$(curl -s -w "%{http_code}" -o "$tmp_file" --cookie cookies.txt https://adventofcode.com/$year/day/$webitem/input) diff --git a/generate_days.sh b/generate_days.sh new file mode 100755 index 0000000..f6f40b1 --- /dev/null +++ b/generate_days.sh @@ -0,0 +1,23 @@ +#!/bin/sh + +leading_zero() { + printf '%02d\n' $1 +} + +if [ $# -le 1 ]; then + echo "year and amount of days arguments not passed" + exit 1 +fi + +mkdir 'src/'$1 +mkdir 'res/'$1 +for i in $(seq 1 $2); do + i2=$(leading_zero $i) + cat Template.cpp | + sed 's/$1/'$1'/g' | + sed 's/$2/'$i2'/g' > \ + 'src/'$1'/Day'$i2'.cpp' + res_dir='res/'$1'/day'$i2'/' + mkdir $res_dir + touch $res_dir'/test_input.txt' +done