github.com/henvic/wedeploycli@v1.7.6-0.20200319005353-3630f582f284/command/list/projects/projects.go (about)

     1  package listprojects
     2  
     3  import (
     4  	"context"
     5  	"fmt"
     6  
     7  	"github.com/henvic/wedeploycli/cmdflagsfromhost"
     8  	"github.com/henvic/wedeploycli/color"
     9  	"github.com/henvic/wedeploycli/command/internal/we"
    10  	"github.com/henvic/wedeploycli/list"
    11  
    12  	"github.com/spf13/cobra"
    13  )
    14  
    15  // ListProjectsCmd is used for getting a list of projects
    16  var ListProjectsCmd = &cobra.Command{
    17  	Use:     "projects",
    18  	Example: `  lcp list projects --url lfr.cloud`,
    19  	Short:   "Show list of projects",
    20  	Args:    cobra.NoArgs,
    21  	PreRunE: preRun,
    22  	RunE:    listRun,
    23  }
    24  
    25  var (
    26  	detailed bool
    27  	watch    bool
    28  )
    29  
    30  var setupHost = cmdflagsfromhost.SetupHost{
    31  	Pattern: cmdflagsfromhost.RemotePattern,
    32  
    33  	Requires: cmdflagsfromhost.Requires{
    34  		Auth: true,
    35  	},
    36  }
    37  
    38  func preRun(cmd *cobra.Command, args []string) error {
    39  	return setupHost.Process(context.Background(), we.Context())
    40  }
    41  
    42  func listRun(cmd *cobra.Command, args []string) error {
    43  	var filter = list.Filter{
    44  		Project:      setupHost.Project(),
    45  		HideServices: true,
    46  	}
    47  
    48  	var l = list.New(filter)
    49  
    50  	if detailed {
    51  		l.Details = list.Detailed
    52  	}
    53  
    54  	if !watch {
    55  		return l.Once(context.Background(), we.Context())
    56  	}
    57  
    58  	fmt.Println(color.Format(color.FgHiBlack,
    59  		"List of projects will be updated when a change occurs.\n"))
    60  
    61  	l.Watch(context.Background(), we.Context())
    62  	return nil
    63  }
    64  
    65  func init() {
    66  	setupHost.Init(ListProjectsCmd)
    67  
    68  	ListProjectsCmd.Flags().BoolVarP(
    69  		&detailed,
    70  		"detailed", "d", false, "Show more projects details")
    71  
    72  	ListProjectsCmd.Flags().BoolVarP(&watch, "watch", "w", false, "Show and watch for changes")
    73  }