github.com/taubyte/tau-cli@v0.1.13-0.20240326000942-487f0d57edfc/cli/new.go (about) 1 package cli 2 3 import ( 4 "github.com/pterm/pterm" 5 "github.com/taubyte/tau-cli/cli/commands/autocomplete" 6 "github.com/taubyte/tau-cli/cli/commands/current" 7 "github.com/taubyte/tau-cli/cli/commands/dream" 8 "github.com/taubyte/tau-cli/cli/commands/exit" 9 "github.com/taubyte/tau-cli/cli/commands/login" 10 "github.com/taubyte/tau-cli/cli/commands/resources/application" 11 "github.com/taubyte/tau-cli/cli/commands/resources/builds" 12 "github.com/taubyte/tau-cli/cli/commands/resources/builds/build" 13 "github.com/taubyte/tau-cli/cli/commands/resources/database" 14 "github.com/taubyte/tau-cli/cli/commands/resources/domain" 15 "github.com/taubyte/tau-cli/cli/commands/resources/function" 16 "github.com/taubyte/tau-cli/cli/commands/resources/library" 17 "github.com/taubyte/tau-cli/cli/commands/resources/logs" 18 "github.com/taubyte/tau-cli/cli/commands/resources/messaging" 19 "github.com/taubyte/tau-cli/cli/commands/resources/network" 20 "github.com/taubyte/tau-cli/cli/commands/resources/project" 21 "github.com/taubyte/tau-cli/cli/commands/resources/service" 22 "github.com/taubyte/tau-cli/cli/commands/resources/smartops" 23 "github.com/taubyte/tau-cli/cli/commands/resources/storage" 24 "github.com/taubyte/tau-cli/cli/commands/resources/website" 25 "github.com/taubyte/tau-cli/cli/commands/version" 26 "github.com/taubyte/tau-cli/cli/common" 27 "github.com/taubyte/tau-cli/flags" 28 "github.com/taubyte/tau-cli/states" 29 "github.com/urfave/cli/v2" 30 ) 31 32 func New() (*cli.App, error) { 33 globalFlags := []cli.Flag{ 34 flags.Env, 35 flags.Color, 36 } 37 38 app := &cli.App{ 39 UseShortOptionHandling: true, 40 Flags: globalFlags, 41 EnableBashCompletion: true, 42 Before: func(ctx *cli.Context) error { 43 states.New(ctx.Context) 44 45 color, err := flags.GetColor(ctx) 46 if err != nil { 47 return err 48 } 49 50 switch color { 51 case flags.ColorNever: 52 pterm.DisableColor() 53 } 54 55 return nil 56 }, 57 Commands: []*cli.Command{ 58 login.Command, 59 current.Command, 60 exit.Command, 61 dream.Command, 62 }, 63 } 64 65 common.Attach(app, 66 project.New, 67 application.New, 68 network.New, 69 database.New, 70 domain.New, 71 function.New, 72 library.New, 73 messaging.New, 74 service.New, 75 smartops.New, 76 storage.New, 77 website.New, 78 builds.New, 79 build.New, 80 logs.New, 81 ) 82 83 app.Commands = append(app.Commands, []*cli.Command{ 84 autocomplete.Command, 85 version.Command, 86 }...) 87 88 return app, nil 89 }