Skip to content
/ cmdr Public

POSIX-compliant command-line UI (CLI) parser and Hierarchical-configuration operations

License

Notifications You must be signed in to change notification settings

hedzr/cmdr

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

cmdr

Build Status Go GitHub tag (latest SemVer) GoDoc FOSSA Status go.dev Go Report Card codecov Coverage Status Mentioned in Awesome Go

cmdr is a POSIX/GNU style, command-line UI (CLI) Go library. It is a getopt-like parser of command-line options, be compatible with the getopt_long command line UI, which is an extension of the syntax recommended by POSIX.

There are couples of enhancements beyond the standard library flag.

There is a full Options Store (configurations) for your hierarchy configuration data too.

ee99d078e2f7

To review the image frames, go surfing at #1 (comment)

Table of Contents

Youtube - 李宗盛2013最新單曲 山丘 官方完整版音檔 / Jonathan Lee - Hill CHT + ENU

Import

The better choice is importing with go-modules enabled:

import "github.com/hedzr/cmdr"

See our extras:

News

  • docs (WIP):

  • v1.7.30

    • added docker hub image for examples/fluent
  • v1.7.29

    • added docker image for examples/fluent
    • added cmdr.InDockerEnv
    • small fixes
  • v1.7.28

    • added cmdr.NewLoggerConfigWith for better smoothing transfer cmdr internal status to log/logex.
    • added cmdr.InDevelopingTime
    • better output in PassThruChar(--) detected
    • doc and added SetTraceMode/SetDebugMode
  • v1.7.27

    • added: WithHelpScreenHooks, GetRemainArgs, ...
    • improved: WithPagerEnabled, InTesting, ...
    • fixed: missed initializing for logger-level in Option Store sometimes.
    • tests
  • v1.7.25

    • New feature: loading command definition from config file
    • fixed bugs
  • v1.7.23

    • A new feature: the builtin pluggable cmdr-addon/plugin. make build && bin/fluent --help && bin/fluent dx
    • added: WithPluginLocations(locations...), WithExtensionsLocations(locations...)
  • v1.7.21

  • v1.7.11

    • update: new log.Logger instance in log.GetLogger
    • fixed: ReadPassword in windows
  • v1.7.10

    • fixed: too much empty lines in help screen
  • v1.7.9

    • right align multi-lines desc string in help screen
    • added new envvars: HELP, NO_COLOR (HELP=1 app some sub cmd == app some sub cmd --help)
  • v1.7.8

    • tabStop in help screen will be autosize now
    • deprecated at next minor release (v1.8+): WithHelpTabStop()
    • deprecated at next minor release (v1.8+): plugins/daemon
    • BREAK: some two methods in the interface Painter has been changed.
  • v1.7.7

    • update deps to improve logging supports
    • deprecated: WithLogex(), as its replacement, WithLogx() has a better generic logging interface (hedzr/log.Logger)
  • v1.7.6:

    • using hedzr/log and remove other logging dependencies.
    • added WithLogx(logger): integrating with your logger (via log.Logger interface)
  • v1.7.5:

    • move some helper function to tool sub-package
  • For more information to refer to CHANGELOG

Features

Features.md

Old README.md: README.old.md

About the Docker build

Here is a docker build for cmdr/examples/fluent so that you can run it without go building or downloading the release files:

# from Docker Hub:
$ docker run -it --rm hedzr/cmdr-fluent
$ docker run -it --rm hedzr/cmdr-fluent --help

# from Github Packages (please following the guide of GitHub Packages Site):
$ docker run -it --rm docker.pkg.github.com/hedzr/cmdr/cmdr-fluent
$ docker run -it --rm docker.pkg.github.com/hedzr/cmdr/cmdr-fluent --help

For Developer

For Developer

Examples

  1. short
    simple codes with structured data style.

  2. demo
    normal demo with external config files.

  3. wget-demo
    partial-covered for GNU wget.

  4. fluent
    demostrates how to define your command-ui with the fluent api style.

  5. ffmain

    a demo to show you how to migrate from go flag smoothly.

  6. cmdr-http2
    http2 server with daemon supports, graceful shutdown

  7. awesome-tool
    awesome-tool is a cli app that fetch the repo stars and generate a markdown summary, accordingly with most of awesome-xxx list in github (such as awesome-go).

See Also the examples index: Examples.md (zh-cn TODO: Examples.zh-cn.md)

Uses

Contrib

Feel free to issue me bug reports and fixes. Many thanks to all contributors.

Thanks to JODL

JODL (JetBrains OpenSource Development License) is good:

goland jetbrains

License

MIT

FOSSA Status