Skip to content

fabjan/outil

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

19 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

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

  • Adapted for Gleam 0.32.

0.4.0

  • Adapted to Gleam 0.27, so no more try syntax.
  • BREAKING -- API change to let library users use use without result.then wrapping.

0.3.3

  • Made --help show itself in the output.
  • Made the usage text present the command line error that caused it to be shown.

0.3.2

  • Fixed a bug where the automatic --help flag didn't react unless the command had positional arguments.

0.3.1

  • Added convenience helpers print_usage and print_usage_and_exit for handling command errors.

0.3.0

  • Expanded the return type of commands to include a way for the command code itself to return errors.
  • BREAKING Some types were renamed to support the above, and be more clear.

0.2.1

  • Fixed some docs.

0.2.0

  • BREAKING Simplified command implementation. The function is the command now, it no longer returns a Command value.

0.1.0

  • Hello world!
  • Something kind of working.

About

A library for writing command line tools.

Resources

License

Stars

Watchers

Forks

Packages

No packages published