import argv import birl import gleam/int import gleam/io import gleam/list import gleam/string import glint fn day_flag() -> glint.Flag(Int) { let flag = glint.int_flag("day") |> glint.flag_help("The day to run") case birl.now() |> birl.get_day() { birl.Day(year: _, month: 12, date: date) -> flag |> glint.flag_default(date) _ -> flag } } fn parts_flag() -> glint.Flag(List(Int)) { glint.ints_flag("part") |> glint.flag_default([1, 2]) |> glint.flag_help("The part(s) to run") } fn run() -> glint.Command(Nil) { use day <- glint.flag(day_flag()) use parts <- glint.flag(parts_flag()) use _, _, flags <- glint.command() let assert Ok(day) = day(flags) let assert Ok(parts) = parts(flags) io.println(int.to_string(day)) parts |> list.map(int.to_string) |> string.join(", ") |> io.println() } pub fn main() { glint.new() |> glint.with_name("run") |> glint.pretty_help(glint.default_pretty_help()) |> glint.add(at: [], do: run()) |> glint.run(argv.load().arguments) }