glint

Hex Package Hex.pm Hex Docs GitHub Workflow Status

Gleam command line argument parsing with basic flag support.

Installation

To install from hex:

gleam add glint

Usage

You can import glint as a dependency and use it as follows: (found in test/mini_demo.gleam, for a more complete example see test/demo.gleam)

  import gleam/io
  import gleam/result
  import gleam/string.{join, uppercase}
  import gleam/function.{compose}
  import gleam/erlang.{start_arguments}
  import glint
  import glint/flag

  const caps = "caps"

  fn hello(input: glint.CommandInput) -> Nil {
    let assert Ok(caps) = flag.get_bool(from: input.flags, for: caps)

    ["Hello,", ..input.args]
    |> case caps {
      True -> compose(join(_, " "), uppercase)
      False -> join(_, " ")
    }
    |> string.append("!")
    |> io.println
  }


  pub fn main() {
    let caps_flag =
      flag.B
      |> flag.default(False)
      |> flag.new
      |> flag.description("Capitalize the provided name")

    glint.new()
    |> glint.add(
      at: [],
      do: glint.command(hello)
      |> glint.flag(caps, caps_flag)
      |> glint.description("Prints Hello, <NAME>!"),
    )
    |> glint.with_pretty_help(glint.default_pretty_help())
    |> glint.run(start_arguments())
  }

Run it with either of:

Built-In Help messages

Run gleam run -- --help to print the generated help message, which in this case will look like:

Prints Hello, <NAME>!

USAGE:
        'gleam run <NAME>' or 'gleam run <NAME> --caps'

FLAGS:
        --help                  Print help information
        --caps=<CAPS>           Capitalize the provided name

Note: Due to this issue commands with flags immediately after gleam run must include the -- as shown above

Search Document