cli

package module
v1.0.0 Latest Latest
Warning

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

Go to latest
Published: Jan 25, 2024 License: MIT Imports: 4 Imported by: 3

README

CLI Lib

Bem-vindo ao CLI Lib, uma biblioteca em Go para simplificar a criação de interfaces de linha de comando (CLIs). Esta biblioteca permite que você construa facilmente aplicativos CLI estruturados e adicione comandos de forma intuitiva.

Instalação

Para começar a usar a CLI Lib, você pode instalá-la usando o seguinte comando:

go get -u github.com/Diegiwg/cli

Exemplo de Uso

Aqui está um exemplo prático de como usar a CLI Lib para criar um simples calculadora CLI:

package main

import (
 "errors"
 "strconv"
 "strings"

 "github.com/Diegiwg/cli"
)

func calc(ctx *cli.Context) error {
 if len(ctx.Args) < 2 {
  return errors.New("não foram fornecidos números suficientes")
 }

 a, err := strconv.Atoi(ctx.Args[0])
 if err != nil {
  return err
 }

 b, err := strconv.Atoi(ctx.Args[1])
 if err != nil {
  return err
 }

 op, ok := ctx.Flags["op"]
 if !ok || !strings.ContainsAny(op, "+-*/") {
  return errors.New("operação inválida")
 }

 switch op {
 case "+":
  {
   println(a + b)
  }
 case "-":
  {
   println(a - b)
  }
 case "*":
  {
   println(a * b)
  }
 case "/":
  {
   println(a / b)
  }
 }

 return nil
}

func main() {
 // Criar um novo aplicativo
 app := cli.NewApp()

 // Adicionar o comando de cálculo ao aplicativo
 app.AddCommand(cli.Command{
  Name:  "calc",
  Desc:  "Calculadora Simples",
  Help:  "Esta é uma calculadora simples para somar, subtrair, multiplicar e dividir números.\n\tPasse os números como argumentos e a operação como uma flag.",
  Usage: "<a> <b> --op <operacao: + - / * >",
  Exec:  calc,
 })

 // Executar o aplicativo
 err := app.Run()
 if err != nil {
  println(err.Error())
 }
}

Neste exemplo, um aplicativo chamado "CalcApp" é criado com a descrição "Uma simples calculadora CLI". É adicionado um comando chamado "calc" que representa a calculadora, com uma descrição, ajuda, uso e uma função de execução associada. O comando pode ser chamado com argumentos numéricos e uma flag de operação.

API da CLI Lib

cli.NewApp() *cli.App

Cria um novo aplicativo CLI.

App.AddCommand(command Command)

Adiciona um novo comando ao aplicativo. Um comando é uma estrutura que inclui campos como nome do comando, descrição, ajuda, modo de uso e uma função de execução.

cli.Command{Name string, Desc string, Help string, Usage string, Exec func(ctx *Context)}

Estrutura que representa um comando na CLI. Os campos incluem o nome do comando, descrição, ajuda, modo de uso e uma função de execução.

cli.Context{App *App, Args []string, Flags map[string]string}

Estrutura que é passada para a função de execução de um comando quando é chamado. Contém referência ao aplicativo, argumentos e flags identificados.

Contribuições

Contribuições são bem-vindas! Sinta-se à vontade para abrir problemas, propor melhorias ou enviar pull requests.

Licença

Este projeto é licenciado sob a Licença MIT - veja o arquivo LICENSE para mais detalhes.

Documentation

Index

Constants

This section is empty.

Variables

This section is empty.

Functions

This section is empty.

Types

type App

type App struct {
	Program         string
	Args            []string
	ArgsPtr         int
	DefaultCommand  func(ctx *Context) error
	SelectedCommand *Command
	Commands        map[string]*Command
}

func NewApp

func NewApp() *App

func (*App) AddCommand

func (app *App) AddCommand(cmd *Command) error

func (*App) EnableDumpCommand

func (app *App) EnableDumpCommand()

func (*App) ParseArgsAndFlags

func (app *App) ParseArgsAndFlags(ctx *Context)

func (*App) ParseCommand

func (app *App) ParseCommand() error

func (*App) Run

func (app *App) Run() error

func (*App) RunCommand

func (app *App) RunCommand() error

func (*App) SetDefaultCommand

func (app *App) SetDefaultCommand(routine func(ctx *Context) error)

type Command

type Command struct {
	Name  string
	Desc  string
	Help  string
	Usage string
	Exec  func(ctx *Context) error
}

type Context

type Context struct {
	App   *App
	Flags map[string]string
	Args  []string
}

Jump to

Keyboard shortcuts

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