1
0
Fork 0

parse command line arguments, get default date

This commit is contained in:
sloane 2024-11-21 21:51:25 -05:00
parent 2d69719919
commit da639ade23
Signed by: sloanelybutsurely
SSH key fingerprint: SHA256:8SBnwhl+RY3oEyQxy1a9wByPzxWM0x+/Ejc+sIlY5qQ
3 changed files with 57 additions and 1 deletions

View file

@ -14,6 +14,9 @@ version = "1.0.0"
[dependencies]
gleam_stdlib = ">= 0.34.0 and < 2.0.0"
glint = ">= 1.1.0 and < 2.0.0"
argv = ">= 1.0.2 and < 2.0.0"
birl = ">= 1.7.1 and < 2.0.0"
[dev-dependencies]
gleeunit = ">= 1.0.0 and < 2.0.0"

View file

@ -2,10 +2,21 @@
# You typically do not need to edit this file
packages = [
{ name = "argv", version = "1.0.2", build_tools = ["gleam"], requirements = [], otp_app = "argv", source = "hex", outer_checksum = "BA1FF0929525DEBA1CE67256E5ADF77A7CDDFE729E3E3F57A5BDCAA031DED09D" },
{ name = "birl", version = "1.7.1", build_tools = ["gleam"], requirements = ["gleam_stdlib", "ranger"], otp_app = "birl", source = "hex", outer_checksum = "5C66647D62BCB11FE327E7A6024907C4A17954EF22865FE0940B54A852446D01" },
{ name = "gleam_community_ansi", version = "1.4.1", build_tools = ["gleam"], requirements = ["gleam_community_colour", "gleam_stdlib"], otp_app = "gleam_community_ansi", source = "hex", outer_checksum = "4CD513FC62523053E62ED7BAC2F36136EC17D6A8942728250A9A00A15E340E4B" },
{ name = "gleam_community_colour", version = "1.4.1", build_tools = ["gleam"], requirements = ["gleam_json", "gleam_stdlib"], otp_app = "gleam_community_colour", source = "hex", outer_checksum = "386CB9B01B33371538672EEA8A6375A0A0ADEF41F17C86DDCB81C92AD00DA610" },
{ name = "gleam_json", version = "2.1.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleam_json", source = "hex", outer_checksum = "0A57FB5666E695FD2BEE74C0428A98B0FC11A395D2C7B4CDF5E22C5DD32C74C6" },
{ name = "gleam_stdlib", version = "0.43.0", build_tools = ["gleam"], requirements = [], otp_app = "gleam_stdlib", source = "hex", outer_checksum = "69EF22E78FDCA9097CBE7DF91C05B2A8B5436826D9F66680D879182C0860A747" },
{ name = "gleeunit", version = "1.2.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "gleeunit", source = "hex", outer_checksum = "F7A7228925D3EE7D0813C922E062BFD6D7E9310F0BEE585D3A42F3307E3CFD13" },
{ name = "glint", version = "1.1.0", build_tools = ["gleam"], requirements = ["gleam_community_ansi", "gleam_community_colour", "gleam_stdlib", "snag"], otp_app = "glint", source = "hex", outer_checksum = "A3F1B7C665FD216BE6A886D56537F0E095FB07DF62146074109270B798F8CEC4" },
{ name = "ranger", version = "1.2.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "ranger", source = "hex", outer_checksum = "1566C272B1D141B3BBA38B25CB761EF56E312E79EC0E2DFD4D3C19FB0CC1F98C" },
{ name = "snag", version = "0.3.0", build_tools = ["gleam"], requirements = ["gleam_stdlib"], otp_app = "snag", source = "hex", outer_checksum = "54D32E16E33655346AA3E66CBA7E191DE0A8793D2C05284E3EFB90AD2CE92BCC" },
]
[requirements]
argv = { version = ">= 1.0.2 and < 2.0.0" }
birl = { version = ">= 1.7.1 and < 2.0.0" }
gleam_stdlib = { version = ">= 0.34.0 and < 2.0.0" }
gleeunit = { version = ">= 1.0.0 and < 2.0.0" }
glint = { version = ">= 1.1.0 and < 2.0.0" }

View file

@ -1,5 +1,47 @@
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() {
io.println("Hello from aoc!")
glint.new()
|> glint.with_name("run")
|> glint.pretty_help(glint.default_pretty_help())
|> glint.add(at: [], do: run())
|> glint.run(argv.load().arguments)
}