Help us shape the future of Go! Take the 2026 Go Developer Survey

cmd

package module
v0.0.0-...-7783c28 Latest Latest
Warning

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

Go to latest
Published: Oct 18, 2026 License: Apache-2.0 Imports: 13 Imported by: 0

README

cmd

Helpers for building cobra command-line applications from annotated Go structs: flags, environment variables and defaults are derived from struct fields, plus signal handling and a small log-level server.

go get git.basepeak.dev/basepeak-ai/cmd
import "git.basepeak.dev/basepeak-ai/cmd"

Origin and attribution

This repository is a fork of gptscript-ai/cmd, originally developed by Acorn Labs, Inc. (now Obot Inc.) and the gptscript-ai contributors. BasePeak GmbH has maintained it as a hard fork since 2026-06-13 under the module path git.basepeak.dev/basepeak-ai/cmd. Many thanks to the original authors.

It also contains code derived from the Kubernetes project (signal handling, Copyright 2017 The Kubernetes Authors) and from rancher/log (pkg/logserver), both Apache-2.0. See NOTICE.

License

Licensed under the Apache License, Version 2.0.

  • Original work Copyright 2023-2026 Obot Inc. (formerly Acorn Labs, Inc.)
  • Modifications Copyright 2026 BasePeak GmbH

See NOTICE for attribution details.

Documentation

Index

Constants

This section is empty.

Variables

View Source
var ShutdownSignals = []os.Signal{os.Interrupt, syscall.SIGTERM}

Functions

func Command

func Command(obj Runnable, children ...any) *cobra.Command

Command populates a cobra.Command object by extracting args from struct tags of the Runnable obj passed. The Run method is assigned to the RunE of the command. children should be either Runnable or *cobra.Command

func Main

func Main(cmd *cobra.Command)

func MainCtx

func MainCtx(ctx context.Context, cmd *cobra.Command)

func Name

func Name(obj any) string

func RequestShutdown

func RequestShutdown() bool

RequestShutdown emulates a received event that is considered as shutdown signal (SIGTERM/SIGINT) This returns whether a handler was notified

func SetupSignalContext

func SetupSignalContext() context.Context

SetupSignalContext is same as SetupSignalHandler, but a context.Context is returned. Only one of SetupSignalContext and SetupSignalHandler should be called, and only can be called once.

func SetupSignalHandler

func SetupSignalHandler() <-chan struct{}

SetupSignalHandler registered for SIGTERM and SIGINT. A stop channel is returned which is closed on one of these signals. If a second signal is caught, the program is terminated with exit code 1. Only one of SetupSignalContext and SetupSignalHandler should be called, and only can be called once.

Types

type Customizer

type Customizer interface {
	Customize(cmd *cobra.Command)
}

type PersistentPreRunnable

type PersistentPreRunnable interface {
	PersistentPre(cmd *cobra.Command, args []string) error
}

type PreRunnable

type PreRunnable interface {
	Pre(cmd *cobra.Command, args []string) error
}

type Runnable

type Runnable interface {
	Run(cmd *cobra.Command, args []string) error
}

Directories

Path Synopsis
pkg

Jump to

Keyboard shortcuts

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