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

     1  package project
     2  
     3  import (
     4  	gosimplegit "github.com/taubyte/go-simple-git"
     5  	"github.com/taubyte/tau-cli/cli/common"
     6  	"github.com/taubyte/tau-cli/flags"
     7  	projectFlags "github.com/taubyte/tau-cli/flags/project"
     8  	projectI18n "github.com/taubyte/tau-cli/i18n/project"
     9  	projectLib "github.com/taubyte/tau-cli/lib/project"
    10  	"github.com/taubyte/tau-cli/prompts"
    11  	projectPrompts "github.com/taubyte/tau-cli/prompts/project"
    12  	"github.com/urfave/cli/v2"
    13  )
    14  
    15  func (link) Checkout() common.Command {
    16  	return common.Create(&cli.Command{
    17  		Flags: []cli.Flag{
    18  			flags.Branch,
    19  			projectFlags.ConfigOnly,
    20  			projectFlags.CodeOnly,
    21  		},
    22  		Action: checkout,
    23  	})
    24  }
    25  
    26  func checkout(ctx *cli.Context) error {
    27  	project, err := projectPrompts.GetOrSelect(ctx, true)
    28  	if err != nil {
    29  		return err
    30  	}
    31  
    32  	repoHandler, err := projectLib.Repository(project.Name).Open()
    33  	if err != nil {
    34  		return err
    35  	}
    36  
    37  	configRepo, err := repoHandler.Config()
    38  	if err != nil {
    39  		return err
    40  	}
    41  
    42  	branch, err := prompts.SelectABranch(ctx, configRepo)
    43  	if err != nil {
    44  		return err
    45  	}
    46  
    47  	err = (&dualRepoHandler{
    48  		ctx:         ctx,
    49  		repository:  repoHandler,
    50  		projectName: project.Name,
    51  		errorFormat: projectI18n.CheckingOutProjectFailed,
    52  		action: func(r *gosimplegit.Repository) error {
    53  			return r.Checkout(branch)
    54  		},
    55  	}).Run()
    56  	if err != nil {
    57  		return err
    58  	}
    59  
    60  	projectI18n.CheckedOutProject(project.Name, branch)
    61  	return nil
    62  }