github.com/taubyte/tau-cli@v0.1.13-0.20240326000942-487f0d57edfc/cli/commands/resources/project/push.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) Push() common.Command {
    16  	return common.Create(&cli.Command{
    17  		Flags: []cli.Flag{
    18  			flags.CommitMessage,
    19  			projectFlags.ConfigOnly,
    20  			projectFlags.CodeOnly,
    21  		},
    22  		Action: push,
    23  	})
    24  }
    25  
    26  func push(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  	commitMessage := prompts.GetOrRequireACommitMessage(ctx)
    38  
    39  	err = (&dualRepoHandler{
    40  		ctx:         ctx,
    41  		repository:  repoHandler,
    42  		projectName: project.Name,
    43  		errorFormat: projectI18n.PullingProjectFailed,
    44  		action: func(r *gosimplegit.Repository) error {
    45  			err = r.Commit(commitMessage, ".")
    46  			if err != nil {
    47  				return err
    48  			}
    49  
    50  			return r.Push()
    51  		},
    52  	}).Run()
    53  	if err != nil {
    54  		return err
    55  	}
    56  
    57  	projectI18n.PushedProject(project.Name)
    58  	return nil
    59  }