outil

Package Version Hex Docs

A library for writing command line tools. Like so:

import gleam/erlang
import gleam/io
import gleam/list
import outil.{command}
import outil/arg
import outil/opt

fn say_hello() {
  use cmd <- command("hello", "Say hello to someone")
  use name, cmd <- arg.string(cmd, "name")
  use enthusiasm, cmd <- opt.int(cmd, "enthusiasm", "How enthusiastic?", 1)

  outil.implement(
    cmd,
    fn(argv) {
      try name = name(argv)
      try enthusiasm = enthusiasm(argv)

      let message = "Hello, " <> name <> string.repeat("!", enthusiasm)

      Ok(io.println(message))
    },
  )
}

fn main() {
  // Erlang is not required, this example just uses it for getting ARGV
  let cmd_args = erlang.start_arguments() |> list.drop(1)
  outil.execute(say_hello(), cmd_args)
}

If you don’t fancy this style of programming, check out glint or Awesome Gleam for alternatives.

Quick start

gleam run   # Run the project
gleam test  # Run the tests
gleam shell # Run an Erlang shell

Installation

If available on Hex this package can be added to your Gleam project:

gleam add outil

and its documentation can be found at https://hexdocs.pm/outil.

Roadmap

Search Document