outil

Package Version Hex Docs

A library for writing command line tools. Like so:

import gleam/erlang
import gleam/io
import gleam/list
import gleam/result
import gleam/string
import outil.{command, print_usage_and_exit}
import outil/arg
import outil/opt

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

 use name <- name(cmd)
 use enthusiasm <- enthusiasm(cmd)

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

 Ok(io.println(message))
}

pub fn main() {
 // Erlang is not required, this example just uses it for getting ARGV
 let args = erlang.start_arguments()

 say_hello(args)
 |> result.map_error(print_usage_and_exit)
}

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

Outil is not going to have many cool features for building comprehensive command line interfaces. It is meant to fit simple programs with simple needs.

Quick start

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

Installation

Outil is available on Hex and can be added to your Gleam project like so:

gleam add outil

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

Changelog

0.5.0

0.4.0

0.3.3

0.3.2

0.3.1

0.3.0

0.2.1

0.2.0

0.1.0

Search Document