github.com/taubyte/tau-cli@v0.1.13-0.20240326000942-487f0d57edfc/cli/commands/resources/project/query.go (about)

     1  package project
     2  
     3  import (
     4  	"github.com/taubyte/tau-cli/cli/common"
     5  	"github.com/taubyte/tau-cli/flags"
     6  	projectI18n "github.com/taubyte/tau-cli/i18n/project"
     7  	projectLib "github.com/taubyte/tau-cli/lib/project"
     8  	projectPrompts "github.com/taubyte/tau-cli/prompts/project"
     9  	"github.com/taubyte/tau-cli/prompts/spinner"
    10  	projectTable "github.com/taubyte/tau-cli/table/project"
    11  	"github.com/urfave/cli/v2"
    12  )
    13  
    14  func (link) Query() common.Command {
    15  	return common.Create(
    16  		&cli.Command{
    17  			Flags: []cli.Flag{
    18  				flags.List,
    19  				flags.Select,
    20  			},
    21  			Action: query,
    22  		},
    23  	)
    24  }
    25  
    26  func (link) List() common.Command {
    27  	return common.Create(
    28  		&cli.Command{
    29  			Action: list,
    30  		},
    31  	)
    32  }
    33  
    34  func query(ctx *cli.Context) error {
    35  	if ctx.Bool(flags.List.Name) {
    36  		return list(ctx)
    37  	}
    38  
    39  	// If --select is set we should not check the user's currently selected project
    40  	checkEnv := !ctx.Bool(flags.Select.Name)
    41  
    42  	project, err := projectPrompts.GetOrSelect(ctx, checkEnv)
    43  	if err != nil {
    44  		return err
    45  	}
    46  	stopGlobe := spinner.Globe()
    47  	repos, err := project.Repositories()
    48  	if err != nil {
    49  		return projectI18n.GettingRepositoriesFailed(project.Name, err)
    50  	}
    51  
    52  	description := projectLib.Description(project)
    53  	stopGlobe()
    54  
    55  	projectTable.Query(project, repos, description)
    56  
    57  	return nil
    58  }