cmdln

package module
v0.0.0-...-7147590 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: May 15, 2026 License: EUPL-1.2 Imports: 13 Imported by: 0

README

codeberg.org/prelift/cmdln

A library for writing CLI programs with flags and subcommands.


© 2025-2026 codeberg.org/prelift/cmdln authors.

Licensed under the EUPL

Documentation

Overview

package cmdln is a library for writing command-line tools.

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type ArgumentSet

type ArgumentSet struct {
	// contains filtered or unexported fields
}

An ArgumentSet is a set of flags and positional arguments for a CLI program.

func (*ArgumentSet) AcceptMany

func (argset *ArgumentSet) AcceptMany(name, desc string, set func([]string) error)

func (*ArgumentSet) AcceptOne

func (argset *ArgumentSet) AcceptOne(name, desc string, set func(string) error)

func (*ArgumentSet) Bool

func (argset *ArgumentSet) Bool(name string, ptr *bool, desc string)

func (*ArgumentSet) Duration

func (argset *ArgumentSet) Duration(name string, ptr *time.Duration, desc string)

func (*ArgumentSet) Flag

func (argset *ArgumentSet) Flag(name string, ptr FlagValue, desc string)

func (*ArgumentSet) Float64

func (argset *ArgumentSet) Float64(name string, ptr *float64, desc string)

func (*ArgumentSet) Int

func (argset *ArgumentSet) Int(name string, ptr *int, desc string)

func (*ArgumentSet) Int64

func (argset *ArgumentSet) Int64(name string, ptr *int64, desc string)

func (*ArgumentSet) Parse

func (argset *ArgumentSet) Parse(args []string) error

func (*ArgumentSet) Require

func (argset *ArgumentSet) Require(name, desc string, set func(string) error)

func (*ArgumentSet) RequireOneOrMore

func (argset *ArgumentSet) RequireOneOrMore(name, desc string, set func([]string) error)

func (*ArgumentSet) Short

func (argset *ArgumentSet) Short(alias, dst string)

func (*ArgumentSet) String

func (argset *ArgumentSet) String(name string, ptr *string, desc string)

func (*ArgumentSet) Summary

func (argset *ArgumentSet) Summary(desc string)

func (*ArgumentSet) Text

func (argset *ArgumentSet) Text(name string, dst TextValue, desc string)

func (*ArgumentSet) Uint

func (argset *ArgumentSet) Uint(name string, dst *uint, desc string)

func (*ArgumentSet) Uint64

func (argset *ArgumentSet) Uint64(name string, dst *uint64, desc string)

func (*ArgumentSet) Usage

func (argset *ArgumentSet) Usage(desc string)

type Command

type Command interface {
	// Describe the command-line interface of the command.
	Describe(*ArgumentSet)
	// Run the command.
	// A CommandSet only ever calls this after the arguments have been parsed.
	Run(context.Context) error
}

A Command that can be added to a CommandSet.

This is intended for use in CLI applications that have multiple subcommands. If a program does not need that, an ArgumentSet is usually easier to use.

type CommandSet

type CommandSet struct {
	// contains filtered or unexported fields
}

A CommandSet is a multiplexer for a set of subcommands.

func (*CommandSet) Alias

func (cmds *CommandSet) Alias(prefix, alias, aliasFor string)

Alias registers an alias for an already-registered Command.

A prefix is accepted to simplify registering aliases deep in the subcommand tree. The following call

cmds.Alias("notes", "", "list")

is shorthand for

cmds.Alias("", "notes", "notes list")

func (*CommandSet) Cmd

func (cmds *CommandSet) Cmd(name string, cmd Command)

Cmd registers a new subcommand with the given name.

Command names can contain multiple parts separated by whitespace:

cmds.Cmd("notes list", notesList)

func (*CommandSet) Help

func (cmds *CommandSet) Help() Command

func (*CommandSet) HelpWithExtraTopics

func (cmds *CommandSet) HelpWithExtraTopics(extra map[string]string) Command

func (*CommandSet) Run

func (cmds *CommandSet) Run(ctx context.Context, args []string) (err error)

Run runs the appropriate subcommand from the command set.

type FlagValue

type FlagValue interface {
	Set(s string) error
}

type TextValue

type TextValue interface {
	encoding.TextMarshaler
	encoding.TextUnmarshaler
}

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL