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) } } }