diff --git a/Makefile b/Makefile index c8a352c..1d50682 100644 --- a/Makefile +++ b/Makefile @@ -1,7 +1,7 @@ GO = go BIN = bin/aoc -.PHONY: build test clean new +.PHONY: build test clean build: @mkdir -p $(dir $(BIN)) @@ -13,53 +13,51 @@ test: clean: @rm -f $(BIN) -new: - @if [ -z "$(filter-out $@,$(MAKECMDGOALS))" ]; then \ - echo "Usage: make new 2020D9"; \ - exit 1; \ - fi - @DAY_ARG=$$(echo $(filter-out $@,$(MAKECMDGOALS)) | awk '{print $$1}'); \ - YEAR=$$(echo $$DAY_ARG | sed 's/D.*//'); \ - DAY_NUM=$$(echo $$DAY_ARG | sed 's/.*D//'); \ - DAY_NAME=$$(case $$DAY_NUM in \ - 1) echo "One" ;; \ - 2) echo "Two" ;; \ - 3) echo "Three" ;; \ - 4) echo "Four" ;; \ - 5) echo "Five" ;; \ - 6) echo "Six" ;; \ - 7) echo "Seven" ;; \ - 8) echo "Eight" ;; \ - 9) echo "Nine" ;; \ - 10) echo "Ten" ;; \ - 11) echo "Eleven" ;; \ - 12) echo "Twelve" ;; \ - 13) echo "Thirteen" ;; \ - 14) echo "Fourteen" ;; \ - 15) echo "Fifteen" ;; \ - 16) echo "Sixteen" ;; \ - 17) echo "Seventeen" ;; \ - 18) echo "Eighteen" ;; \ - 19) echo "Nineteen" ;; \ - 20) echo "Twenty" ;; \ - 21) echo "TwentyOne" ;; \ - 22) echo "TwentyTwo" ;; \ - 23) echo "TwentyThree" ;; \ - 24) echo "TwentyFour" ;; \ - 25) echo "TwentyFive" ;; \ - *) echo "Unknown" ;; \ - esac); \ - mkdir -p internal/$$YEAR/Day$$DAY_NAME; \ - mkdir -p internal/data/$$YEAR/Day$$DAY_NAME; \ - touch internal/$$YEAR/Day$$DAY_NAME/code.go; \ - touch internal/$$YEAR/Day$$DAY_NAME/code_test.go; \ - if [ -n "$$ADVENTOFCODE_SESSION" ]; then \ - curl -s -H "Cookie: session=$$ADVENTOFCODE_SESSION" \ - https://adventofcode.com/$$YEAR/day/$$DAY_NUM/input \ - | perl -pe 'chomp if eof' > internal/data/$$YEAR/Day$$DAY_NAME/input.txt; \ - else \ - touch internal/data/$$YEAR/Day$$DAY_NAME/input.txt; \ - fi; \ - %: - @: + @DAY_ARG=$@; \ + if echo $$DAY_ARG | grep -qE '^[0-9]{4}D[0-9]+$$'; then \ + YEAR=$$(echo $$DAY_ARG | sed 's/D.*//'); \ + DAY_NUM=$$(echo $$DAY_ARG | sed 's/.*D//'); \ + DAY_NAME=$$(case $$DAY_NUM in \ + 1) echo "One" ;; \ + 2) echo "Two" ;; \ + 3) echo "Three" ;; \ + 4) echo "Four" ;; \ + 5) echo "Five" ;; \ + 6) echo "Six" ;; \ + 7) echo "Seven" ;; \ + 8) echo "Eight" ;; \ + 9) echo "Nine" ;; \ + 10) echo "Ten" ;; \ + 11) echo "Eleven" ;; \ + 12) echo "Twelve" ;; \ + 13) echo "Thirteen" ;; \ + 14) echo "Fourteen" ;; \ + 15) echo "Fifteen" ;; \ + 16) echo "Sixteen" ;; \ + 17) echo "Seventeen" ;; \ + 18) echo "Eighteen" ;; \ + 19) echo "Nineteen" ;; \ + 20) echo "Twenty" ;; \ + 21) echo "TwentyOne" ;; \ + 22) echo "TwentyTwo" ;; \ + 23) echo "TwentyThree" ;; \ + 24) echo "TwentyFour" ;; \ + 25) echo "TwentyFive" ;; \ + *) echo "Unknown" ;; \ + esac); \ + mkdir -p internal/$$YEAR/Day$$DAY_NAME; \ + mkdir -p internal/data/$$YEAR/Day$$DAY_NAME; \ + touch internal/$$YEAR/Day$$DAY_NAME/code.go; \ + touch internal/$$YEAR/Day$$DAY_NAME/code_test.go; \ + if [ -n "$$ADVENTOFCODE_SESSION" ]; then \ + curl -s -H "Cookie: session=$$ADVENTOFCODE_SESSION" \ + https://adventofcode.com/$$YEAR/day/$$DAY_NUM/input \ + | perl -pe 'chomp if eof' > internal/data/$$YEAR/Day$$DAY_NAME/input.txt; \ + else \ + touch internal/data/$$YEAR/Day$$DAY_NAME/input.txt; \ + fi; \ + echo "$$DAY_ARG ready to be solved."; \ + else \ + :; \ + fi \ No newline at end of file