1
1
#! /usr/bin/env bash
2
2
# Shared helpers for AoC scripts.
3
3
4
+
5
+ # Remove leading zeroes from a number
6
+ # The 10# prefix tells bash to treat the number as base-10, which automatically removes leading zeroes.
7
+ __aoc_strip_leading_zeroes () {
8
+ local num=" $1 "
9
+ echo $(( 10 #$num ))
10
+ }
11
+
4
12
# Initialize a main script for AoC.
5
13
aoc_init_script () {
6
14
aoc_cd_git_root
@@ -30,6 +38,11 @@ aoc_parse_year() {
30
38
year=$( date +%Y)
31
39
if [ $# -eq 1 ]; then
32
40
IFS=" /" read -ra ym <<< " $date"
41
+ if (( ${# ym[@]} != 2 )) ; then
42
+ echo " Could not parse year." >&2
43
+ exit 7
44
+ fi
45
+
33
46
year=${ym[0]}
34
47
test ${# year} -eq 4 || year=" 20$year "
35
48
elif [ " $( date +%m) " != 12 ]; then
@@ -46,6 +59,10 @@ aoc_parse_day() {
46
59
day=$( date +%d)
47
60
if [ $# -eq 1 ]; then
48
61
IFS=" /" read -ra ym <<< " $date"
62
+ if (( ${# ym[@]} != 2 )) ; then
63
+ echo " Could not parse date." >&2
64
+ exit 9
65
+ fi
49
66
day=${ym[1]}
50
67
test ${# day} -eq 2 || day=" 0$day "
51
68
elif [ " $( date +%m) " != 12 ]; then
@@ -60,7 +77,7 @@ aoc_fetch_input() {
60
77
local year day0 day url_fmt url
61
78
year=" $1 "
62
79
day0=" $2 "
63
- day=$( echo " $day0 " | bc )
80
+ day=$( __aoc_strip_leading_zeroes " $day0 " )
64
81
65
82
url_fmt=" https://adventofcode.com/%d/day/%d/input"
66
83
# shellcheck disable=SC2059
@@ -82,7 +99,7 @@ aoc_create_readme() {
82
99
local year day0 day url_base url
83
100
year=" $1 "
84
101
day0=" $2 "
85
- day=$( echo " $day0 " | bc )
102
+ day=$( __aoc_strip_leading_zeroes " $day0 " )
86
103
87
104
url_base=" adventofcode.com/${year} /day/${day} "
88
105
url=" https://${url_base} "
@@ -112,7 +129,7 @@ aoc_create_instructions_url() {
112
129
local year day0 day url
113
130
year=" $1 "
114
131
day0=" $2 "
115
- day=$( echo " $day0 " | bc )
132
+ day=$( __aoc_strip_leading_zeroes " $day0 " )
116
133
117
134
url=" https://adventofcode.com/${year} /day/${day} "
118
135
@@ -131,7 +148,7 @@ aoc_create_input_script() {
131
148
local year day0 day url
132
149
year=" $1 "
133
150
day0=" $2 "
134
- day=$( echo " $day0 " | bc )
151
+ day=$( __aoc_strip_leading_zeroes " $day0 " )
135
152
136
153
url=" https://adventofcode.com/${year} /day/${day} /input"
137
154
@@ -170,4 +187,4 @@ aoc_create_enter() {
170
187
local path=" $year /$day "
171
188
mkdir -p " $path "
172
189
cd " $path " || exit 6
173
- }
190
+ }
0 commit comments