Cheer generates help from the same metadata you use to declare the command. Customization is all opt-in.

Short vs long help

Every command gets two help forms:

  • -h prints short help, built from about and help fields.
  • --help prints long help, preferring long_about over about and long_help over help where those are set.
command "deploy" do
  about "Deploy to an environment"
  long_about """
  Deploy the current HEAD to a target environment. Accepts an environment
  name and an optional region.
  """
end

option :env, type: :string,
  help: "Target environment",
  long_help: "Target environment (one of: dev, staging, prod)"

Before and after help

Wrap the auto-generated output with fixed text:

command "my-app" do
  before_help "MyApp CLI\n"
  after_help "Report issues at github.com/me/my-app"
end

Custom usage line

Override the auto-generated usage:

command "deploy" do
  usage "my-app deploy [--env <ENV>] [--dry-run] [TARGET]"
end

Grouping options under headings

Use :help_heading to put options under a custom section:

option :host, type: :string, help_heading: "Network"
option :port, type: :integer, help_heading: "Network"
option :user, type: :string, help_heading: "Auth"
option :pass, type: :string, help_heading: "Auth"

Default behavior: options without a heading appear first under OPTIONS:, then each custom heading appears in first-declaration order.

Display order

Lower numbers appear first. Applies to options, arguments, and subcommands.

option :verbose, type: :boolean, display_order: 1
option :quiet,   type: :boolean, display_order: 2

command "deploy" do
  display_order 1
end

Within any section, items without a :display_order fall back to declaration order. Stable sort, so mixing explicit and implicit ordering is predictable.

Hiding from help

option :internal, type: :boolean, hide: true
command "debug" do
  hide true
end

Still accepted by the parser; absent from help output.

Flag naming

Cheer converts atom option names to kebab-case in both the parser and help output. :base_port becomes --base-port everywhere. You do not need to match them by hand.

See also

  • Options and Arguments for the declarations these settings decorate.
  • Subcommands for aliasing and prefix inference, both of which show up in help output.