a helper to make simple programs with cobra
Go to file
2023-03-21 23:12:12 -06:00
.milpa/commands crazy computers are crazy. go package documentation 2023-03-21 00:28:25 -06:00
internal crazy computers are crazy. go package documentation 2023-03-21 00:28:25 -06:00
pkg tweak error colors 2023-03-21 23:12:12 -06:00
.editorconfig moar milpa stuff 2022-12-30 23:53:24 -06:00
.gitignore error on unexpected arguments, test out logger, add .milpa 2023-03-20 22:18:09 -06:00
.golangci.yml milpa, pero para golang 2022-12-18 21:04:34 -06:00
.tool-versions update to go 1.20 2023-03-16 20:32:36 -06:00
go.mod update to go 1.20 2023-03-16 20:32:36 -06:00
go.sum update to go 1.20 2023-03-16 20:32:36 -06:00
LICENSE.txt fix license 2022-12-31 00:12:55 -06:00
main.go make version command name adjustable 2023-01-22 22:29:18 -06:00
README.md format readme 2023-01-17 20:48:38 -06:00

Chinampa

Like milpa but for go programs only.

package main

import (
	"os"
	"fmt"

	"git.rob.mx/nidito/chinampa"
	"git.rob.mx/nidito/chinampa/pkg/command"
	"git.rob.mx/nidito/chinampa/pkg/runtime"
	"github.com/sirupsen/logrus"
)


func main() {
	chinampa.Register(&command.Command{
		Path:        []string{"something"},
		Summary:     "does something",
		Description: "a longer description of how it does stuff",
		Arguments: command.Arguments{
			{
				Name:        "argument zero",
				Description: "a help text for using argument zero",
				Required:    true,
			},
		},
		Action: func(cmd *command.Command) error {
			someArg := cmd.Arguments[0].ToValue().(string)

			return fmt.Errorf("Don't know how to do stuff with %s", someArg)
		},
	})

	logrus.SetFormatter(&logrus.TextFormatter{
		DisableLevelTruncation: true,
		DisableTimestamp:       true,
		ForceColors:            runtime.ColorEnabled(),
	})

	if runtime.DebugEnabled() {
		logrus.SetLevel(logrus.DebugLevel)
		logrus.Debug("Debugging enabled")
	}

	cfg := chinampa.Config{
		Name:        "myProgram",
		Version:     "0.0.0",
		Summary:     "a short summary of my program",
		Description: "a longer text describing what its for",
	}

	if err := chinampa.Execute(cfg); err != nil {
		logrus.Errorf("total failure: %s", err)
		os.Exit(2)
	}
}