Documentation
¶
Overview ¶
cmd/factory/sync/sync.go
Index ¶
Constants ¶
This section is empty.
Variables ¶
View Source
var SyncCmd = &cobra.Command{ Use: "sync", Example: ` contextvibes factory sync`, Args: cobra.NoArgs, RunE: func(cmd *cobra.Command, args []string) error { presenter := ui.NewPresenter(cmd.OutOrStdout(), cmd.ErrOrStderr()) ctx := cmd.Context() presenter.Summary("Synchronizing local branch with remote.") workDir, err := os.Getwd() if err != nil { return err } gitCfg := git.GitClientConfig{ Logger: globals.AppLogger, Executor: globals.ExecClient.UnderlyingExecutor(), } client, err := git.NewClient(ctx, workDir, gitCfg) if err != nil { presenter.Error("Failed git init: %v", err) return err } isClean, err := client.IsWorkingDirClean(ctx) if err != nil { return err } if !isClean { presenter.Error("Working directory has uncommitted changes.") presenter.Advice("Please commit or stash your changes before syncing.") return errors.New("working directory not clean") } currentBranch, _ := client.GetCurrentBranchName(ctx) presenter.Newline() presenter.Info("Proposed Sync Actions:") presenter.Detail("1. Update local branch '%s' from remote (git pull --rebase).", currentBranch) presenter.Detail("2. Push local changes to remote if ahead (git push).") presenter.Newline() if !globals.AssumeYes { confirmed, err := presenter.PromptForConfirmation("Proceed with sync?") if err != nil { return err } if !confirmed { presenter.Info("Sync aborted by user.") return nil } } if err := client.PullRebase(ctx, currentBranch); err != nil { presenter.Error("Error during 'git pull --rebase'. Resolve conflicts manually.") return err } isAhead, err := client.IsBranchAhead(ctx) if err != nil { return err } if isAhead { if err := client.Push(ctx, currentBranch); err != nil { return err } } presenter.Newline() presenter.Success("Sync completed successfully.") return nil }, }
SyncCmd represents the sync command
Functions ¶
This section is empty.
Types ¶
This section is empty.
Click to show internal directories.
Click to hide internal directories.