8000 GitHub - hedzr/cmdr-loaders: loaders of the external sources, for cmdr v2
[go: up one dir, main page]
More Web Proxy on the site http://driver.im/
Skip to content

hedzr/cmdr-loaders

Repository files navigation

Loaders for cmdr/v2

Go GitHub go.mod Go version GitHub tag (latest SemVer)

Local configuration file loaders for various file formats, such as YAML, TOML, HCL, and much more.

This is an addon library especially for cmdr/v2.

The typical app is cmdr-test/examples/large.

image-20241111141228632

A tiny app using cmdr/v2 and cmdr-loaders is:

package main

import (
	"context"
	"os"

	loaders "github.com/hedzr/cmdr-loaders"
	"github.com/hedzr/cmdr/v2"
	"github.com/hedzr/cmdr/v2/cli"
	"github.com/hedzr/cmdr/v2/examples/common"
	"github.com/hedzr/cmdr/v2/examples/blueprint/cmd"
	"github.com/hedzr/cmdr/v2/examples/devmode"
	"github.com/hedzr/cmdr/v2/pkg/logz"
)

const (
	appName = "blueprint"
	desc    = `a good blueprint for you.`
	version = cmdr.Version
	author  = `The Examples Authors`
)

func main() {
	ctx, cancel := context.WithCancel(context.Background())
	defer cancel()
	app := prepareApp(cmd.Commands...) // define your own commands implementations with cmd/*.go
	if err := app.Run(ctx); err != nil {
		logz.ErrorContext(ctx, "Application Error:", "err", err) // stacktrace if in debug mode/build
		os.Exit(app.SuggestRetCode())
	} else if rc := app.SuggestRetCode(); rc != 0 {
		os.Exit(rc)
	}
}

func prepareApp(commands ...cli.CmdAdder) cli.App {
	return loaders.Create(
		appName, version, author, desc,
		append([]cli.Opt{
			cmdr.WithAutoEnvBindings(true),  // default it's false
			cmdr.WithSortInHelpScreen(true), // default it's false
			// cmdr.WithDontGroupInHelpScreen(false), // default it's false
			// cmdr.WithForceDefaultAction(false),
		})...,
	).
		// importing devmode package and run its init():
		With(func(app cli.App) { logz.Debug("in dev mode?", "mode", devmode.InDevelopmentMode()) }).
		WithBuilders(
			common.AddHeadLikeFlagWithoutCmd, // add a `--line` option, feel free to remove it.
			common.AddToggleGroupFlags,       //
			common.AddTypedFlags,             //
			common.AddKilobytesFlag,          //
			common.AddValidArgsFlag,          //
		).
		WithAdders(commands...).
		Build()
}

and cmd/... at:

See also:

History

See full list in CHANGELOG

License

Apache 2.0

About

loaders of the external sources, for cmdr v2

Topics

Resources

License

Stars

Watchers

Forks

Sponsor this project

Packages

No packages published

Contributors 2

  •  
  •  
0