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

     1  package repositoryCommands
     2  
     3  import (
     4  	"github.com/pterm/pterm"
     5  	repositoryI18n "github.com/taubyte/tau-cli/i18n/repository"
     6  	projectLib "github.com/taubyte/tau-cli/lib/project"
     7  	repositoryLib "github.com/taubyte/tau-cli/lib/repository"
     8  	"github.com/taubyte/tau-cli/prompts"
     9  	"github.com/urfave/cli/v2"
    10  )
    11  
    12  func (lib *repositoryCommands) Edit(ctx *cli.Context) error {
    13  	project, err := projectLib.SelectedProjectConfig()
    14  	if err != nil {
    15  		return err
    16  	}
    17  
    18  	resource, err := lib.PromptsGetOrSelect(ctx)
    19  	if err != nil {
    20  		return err
    21  	}
    22  
    23  	originalRepoId := resource.Get().RepoID()
    24  
    25  	infoIface, err := lib.PromptsEdit(ctx, resource)
    26  	if err != nil {
    27  		return err
    28  	}
    29  
    30  	var cloneMethod func() error
    31  	switch info := infoIface.(type) {
    32  	case *repositoryLib.Info:
    33  		if info.DoClone {
    34  			cloneMethod = func() error {
    35  				_, err = info.Clone(project, resource.Get().RepositoryURL(), resource.Get().Branch(), prompts.GetOrAskForEmbedToken(ctx))
    36  				if err != nil {
    37  					return err
    38  				}
    39  
    40  				return nil
    41  			}
    42  		}
    43  	}
    44  
    45  	confirm := lib.TableConfirm(ctx, resource, lib.PromptsEditThis)
    46  	if confirm {
    47  		if cloneMethod != nil {
    48  			err = cloneMethod()
    49  			if err != nil {
    50  				return err
    51  			}
    52  		}
    53  
    54  		// Register the repository if ID has changed
    55  		if originalRepoId != resource.Get().RepoID() {
    56  			err = repositoryLib.Register(resource.Get().RepoID())
    57  			if err != nil {
    58  				// should not fail on registration as it could already be registered
    59  				pterm.Warning.Println(repositoryI18n.RegisteringRepositoryFailed(resource.Get().Name(), err))
    60  
    61  			} else {
    62  				lib.I18nRegistered(resource.Get().RepositoryURL())
    63  			}
    64  		}
    65  
    66  		err := lib.LibSet(resource)
    67  		if err != nil {
    68  			return err
    69  		}
    70  		lib.I18nEdited(resource.Get().Name())
    71  
    72  		return nil
    73  	}
    74  
    75  	return nil
    76  }