Command Line options and args Interpreter
Go to file
2026-01-22 12:36:33 +01:00
arg-base.go first commit status: option and argument parsing, short aliases grouping, special values, hidden options 2025-12-11 07:57:48 +01:00
arg-string-array.go first commit status: option and argument parsing, short aliases grouping, special values, hidden options 2025-12-11 07:57:48 +01:00
arg-string.go first commit status: option and argument parsing, short aliases grouping, special values, hidden options 2025-12-11 07:57:48 +01:00
cli_test.go first commit status: option and argument parsing, short aliases grouping, special values, hidden options 2025-12-11 07:57:48 +01:00
cli-usage.go added program name and description to the help output 2026-01-22 12:36:33 +01:00
cli-version.go first commit status: option and argument parsing, short aliases grouping, special values, hidden options 2025-12-11 07:57:48 +01:00
cli.go added program name and description to the help output 2026-01-22 12:36:33 +01:00
common.go first commit status: option and argument parsing, short aliases grouping, special values, hidden options 2025-12-11 07:57:48 +01:00
go.mod first commit status: option and argument parsing, short aliases grouping, special values, hidden options 2025-12-11 07:57:48 +01:00
LICENSE first commit status: option and argument parsing, short aliases grouping, special values, hidden options 2025-12-11 07:57:48 +01:00
opt-base.go first commit status: option and argument parsing, short aliases grouping, special values, hidden options 2025-12-11 07:57:48 +01:00
opt-bool.go first commit status: option and argument parsing, short aliases grouping, special values, hidden options 2025-12-11 07:57:48 +01:00
opt-help.go first commit status: option and argument parsing, short aliases grouping, special values, hidden options 2025-12-11 07:57:48 +01:00
opt-int-array.go opt-int-array.go: changed data type in error messages 2026-01-22 12:34:22 +01:00
opt-int.go first commit status: option and argument parsing, short aliases grouping, special values, hidden options 2025-12-11 07:57:48 +01:00
opt-manager.go first commit status: option and argument parsing, short aliases grouping, special values, hidden options 2025-12-11 07:57:48 +01:00
opt-string-array.go first commit status: option and argument parsing, short aliases grouping, special values, hidden options 2025-12-11 07:57:48 +01:00
opt-string-map.go first commit status: option and argument parsing, short aliases grouping, special values, hidden options 2025-12-11 07:57:48 +01:00
opt-string.go first commit status: option and argument parsing, short aliases grouping, special values, hidden options 2025-12-11 07:57:48 +01:00
opt-version.go first commit status: option and argument parsing, short aliases grouping, special values, hidden options 2025-12-11 07:57:48 +01:00
parser.go first commit status: option and argument parsing, short aliases grouping, special values, hidden options 2025-12-11 07:57:48 +01:00
README.md README.md AI generated 2025-12-14 05:50:27 +01:00
simple-opt-tracer.go first commit status: option and argument parsing, short aliases grouping, special values, hidden options 2025-12-11 07:57:48 +01:00

go-pkg/cli

Lightweight, dependency-free command-line argument and option parsing library for Go.

Overview

This package provides a small, composable CLI parser with support for:

  • boolean, string, int, and array/map options
  • positional arguments (single and repeating)
  • aliases, short flags, defaults and hidden options
  • validation for incompatible options and custom "special" values
  • automatic usage and version printing

See the core parser implementation in parser.go and the high-level API in cli.go.

Features

Quick start

Example: define options and parse argv

package main

import (
  "fmt"
  "git.portale-stac.it/go-pkg/cli"
)

func main() {
  var parser cli.CliParser
  parser.Init([]string{"prog", "--debug", "--config", "app.yaml", "input.txt"}, "$VER:prog,0.1.0,2025,email:$")

  // define target variables and options
  var debug bool
  var config string
  var inputs []string

  parser.AddBoolOpt("debug", "d", &debug, "Enable debug")
  parser.AddStringOpt("config", "c", &config, "app.yaml", "Config file")
  parser.AddStringArrayArg("files", true, &inputs, "Input files")

  // print usage: parser.Usage() - see [`CliParser.Usage`](cli-usage.go)
  if err := parser.Parse(); err != nil {
    fmt.Println("parse error:", err)
    return
  }

  fmt.Println("debug:", debug)
  fmt.Println("config:", config)
  fmt.Println("inputs:", inputs)
}

Refer to the unit test for a realistic example: cli_test.go.

API Reference

Key types and methods:

For implementation details, consult:

License

This project is licensed under the terms in LICENSE.

Contributing

Open issues or pull requests are welcome. Run and extend the tests in cli_test.go when making changes.