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  }