Files
golib/cobra
nabbar 9e8179374b README:
- Add some README file to give missing documentations or update existing documentation file

Package Archive:
- Add some comments to godoc information
- Moving NopWriterCloser interface to ioutils package

Package IOUtils:
- New package NopWriterCloser to implement interfac like NopReader

Package Database:
- KVMap: fix missing function following update of kvdriver

Package Duration:
- Rename BDD testing

Package Context/Gin:
- Moving function New between model & interface file

Package AWS:
- rework Walk function to use more generic with standard walk caller function
- func walk will now no more return and include error (can be catched into the given func)
- func walk will now return a bool to continue or stop the loop
- func walk with many input function will now stop when all given function return false
- func walk will now return error only about main process and not given function

Package errors:
- Add interface error into interface Error

Package IOUtils:
- Moving IOWrapper as subPackage and optimize process + allow thread safe
2025-05-25 06:29:25 +02:00
..
2023-11-21 20:21:37 +01:00
2023-11-29 16:05:28 +01:00
2023-11-29 16:05:28 +01:00
2023-10-03 12:03:36 +02:00
2022-02-21 07:32:44 +01:00
2025-05-25 06:29:25 +02:00

cobra Package

The cobra package provides a wrapper and utility layer around the spf13/cobra library, simplifying the creation of CLI applications in Go. It adds helpers for configuration management, command completion, error code printing, and flag handling, as well as integration with logging and versioning.

Features

  • Simplified CLI application setup using Cobra
  • Automatic version and description management
  • Built-in commands for shell completion, configuration file generation, and error code listing
  • Extensive helpers for adding flags of various types (string, int, bool, slices, maps, etc.)
  • Integration with custom logger and version modules
  • Support for persistent and local flags

Main Types

  • Cobra: Main interface for building CLI applications
  • FuncInit, FuncLogger, FuncViper, FuncPrintErrorCode: Function types for custom initialization, logging, configuration, and error printing

Quick Start

Create a New CLI Application

import (
    "github.com/nabbar/golib/cobra"
    "github.com/nabbar/golib/version"
)

func main() {
    app := cobra.New()
    app.SetVersion(version.New(...)) // Set your version info
    app.Init()
    // Add commands, flags, etc.
    app.Execute()
}

Add Built-in Commands

  • Completion: Generates shell completion scripts (bash, zsh, fish, PowerShell)
  • Configure: Generates a configuration file in JSON, YAML, or TOML
  • Error: Prints error codes for the application
app.AddCommandCompletion()
app.AddCommandConfigure("conf", "myapp", defaultConfigFunc)
app.AddCommandPrintErrorCode(func(code, desc string) {
    fmt.Printf("%s: %s\n", code, desc)
})

Add Flags

var configPath string
app.SetFlagConfig(true, &configPath)

var verbose int
app.SetFlagVerbose(true, &verbose)

var myString string
app.AddFlagString(false, &myString, "name", "n", "default", "Description of the flag")

Add Custom Commands

cmd := app.NewCommand("hello", "Say hello", "Prints hello world", "", "")
cmd.Run = func(cmd *cobra.Command, args []string) {
    fmt.Println("Hello, world!")
}
app.AddCommand(cmd)

API Overview

  • SetVersion(v Version): Set version information
  • SetFuncInit(fct FuncInit): Set custom initialization function
  • SetLogger(fct FuncLogger): Set custom logger
  • SetViper(fct FuncViper): Set custom viper config handler
  • SetFlagConfig(persistent, *string): Add a config file flag
  • SetFlagVerbose(persistent, *int): Add a verbose flag
  • AddFlagXXX(...): Add various types of flags (see code for full list)
  • AddCommandCompletion(): Add shell completion command
  • AddCommandConfigure(alias, basename, defaultConfigFunc): Add config file generation command
  • AddCommandPrintErrorCode(fct): Add error code listing command
  • Execute(): Run the CLI application

Error Handling

All commands and helpers return standard Go error values. Always check and handle errors when using the API.


Notes

  • The package is designed to be extensible and integrates with custom logger and version modules from golib.
  • Configuration file generation supports JSON, YAML, and TOML formats.
  • Shell completion scripts can be generated for bash, zsh, fish, and PowerShell.