package main
import "core:fmt"
import "core:log"
import os "core:os/os2"
import "core:strconv"
import "./day_01"
import "./day_02"
import "./day_03"
import "./day_04"
import "./day_05"
import "./day_06"
import "./day_07"
import "./day_08"
import "./day_09"
import "./day_10"
import "./day_11"
import "./day_12"
days := []proc() {
day_01.run,
day_02.run,
day_03.run,
day_04.run,
day_05.run,
day_06.run,
day_07.run,
day_08.run,
day_09.run,
day_10.run,
day_11.run,
day_12.run,
}
main :: proc() {
context.logger = log.create_console_logger(ident = "MAIN")
defer log.destroy_console_logger(context.logger)
day := 0
level: log.Level = .Info
if len(os.args) > 1 {
for arg, i in os.args {
switch arg {
case "-debug":
level = .Debug
case "-day":
if i + 1 >= len(os.args) {
log.errorf("-day ")
os.exit(-1)
}
day = strconv.parse_int(os.args[i + 1]) or_else 0
if day < 1 || day > len(days) {
log.errorf("-day invalid")
os.exit(-1)
}
}
}
}
if day > 0 {
context.logger = log.create_console_logger(lowest = level, ident = fmt.tprintf("DAY %d", day))
defer log.destroy_console_logger(context.logger)
days[day - 1]()
free_all(context.temp_allocator)
} else {
for run, i in days {
context.logger = log.create_console_logger(lowest = level, ident = fmt.tprintf("DAY %d", i + 1))
defer log.destroy_console_logger(context.logger)
run()
free_all(context.temp_allocator)
}
}
}