Skip to content
This repository has been archived by the owner on Oct 25, 2021. It is now read-only.

tdakkota-legacy/cliflags

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

23 Commits
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

cliflags

Go Documentation license

Ready to use flag sets for github.com/urfave/cli.

Example for vksdk

package main

import (
	"fmt"
	"os"

	"github.com/SevereCloud/vksdk/v2/api/params"
	"github.com/tdakkota/cliflags"
	"github.com/tdakkota/cliflags/vksdk"
	"github.com/urfave/cli/v2"
)

type App struct{}

func NewApp() *App {
	return &App{}
}

func (app *App) cli() *cli.App {
	cliApp := &cli.App{
		Name:  "example app",
		Flags: vksdk.Flags(cliflags.DefaultNamer{}),
		Action: func(c *cli.Context) error {
			b, err := vksdk.Build(c)
			if err != nil {
				return err
			}

			p := params.NewUsersGetBuilder()
			p.WithContext(c.Context)
			r, err := b.Complete().UsersGet(p.Params)
			if err != nil {
				return err
			}

			fmt.Println(r)
			return nil
		},
	}

	return cliApp
}

func (app *App) Run(args []string) error {
	return app.cli().Run(args)
}

func main() {
	if err := NewApp().Run(os.Args); err != nil {
		_, _ = os.Stdout.WriteString(err.Error() + "\n")
		os.Exit(1)
	}
}