Skip to content

Commit 0fa5add

Browse files
committed
update-all: use common infrastructure
Update 'update-all.go' to use 'common.FileSystem' to get the path to the 'git-bundle-server' executbale, and use 'cmd.CommandExecutor' to call 'git-bundle-server update'. The use of the common structures eliminate some duplicate code as well as set up the command to be unit testable in the future. Signed-off-by: Victoria Dye <[email protected]>
1 parent ae0f7b4 commit 0fa5add

File tree

1 file changed

+11
-13
lines changed

1 file changed

+11
-13
lines changed

Diff for: cmd/git-bundle-server/update-all.go

+11-13
Original file line numberDiff line numberDiff line change
@@ -2,11 +2,13 @@ package main
22

33
import (
44
"context"
5+
"fmt"
56
"os"
6-
"os/exec"
77

88
"github.com/github/git-bundle-server/cmd/utils"
99
"github.com/github/git-bundle-server/internal/argparse"
10+
"github.com/github/git-bundle-server/internal/cmd"
11+
"github.com/github/git-bundle-server/internal/common"
1012
"github.com/github/git-bundle-server/internal/core"
1113
"github.com/github/git-bundle-server/internal/log"
1214
)
@@ -37,13 +39,15 @@ func (u *updateAllCmd) Run(ctx context.Context, args []string) error {
3739
parser.Parse(ctx, args)
3840

3941
repoProvider := utils.GetDependency[core.RepositoryProvider](ctx, u.container)
42+
fileSystem := utils.GetDependency[common.FileSystem](ctx, u.container)
43+
commandExecutor := utils.GetDependency[cmd.CommandExecutor](ctx, u.container)
4044

4145
repos, err := repoProvider.GetRepositories(ctx)
4246
if err != nil {
4347
return u.logger.Error(ctx, err)
4448
}
4549

46-
exe, err := os.Executable()
50+
exe, err := fileSystem.GetLocalExecutable("git-bundle-server")
4751
if err != nil {
4852
return u.logger.Errorf(ctx, "failed to get path to execuable: %w", err)
4953
}
@@ -53,19 +57,13 @@ func (u *updateAllCmd) Run(ctx context.Context, args []string) error {
5357

5458
for route := range repos {
5559
subargs[1] = route
56-
cmd := exec.Command(exe, subargs...)
57-
cmd.Stderr = os.Stderr
58-
cmd.Stdout = os.Stdout
59-
60-
err := cmd.Start()
61-
if err != nil {
62-
return u.logger.Errorf(ctx, "git command failed to start: %w", err)
63-
}
64-
65-
err = cmd.Wait()
60+
exitCode, err := commandExecutor.Run(ctx, exe, subargs, cmd.Stdout(os.Stdout), cmd.Stderr(os.Stderr))
6661
if err != nil {
67-
return u.logger.Errorf(ctx, "git command returned a failure: %w", err)
62+
return u.logger.Error(ctx, err)
63+
} else if exitCode != 0 {
64+
return u.logger.Errorf(ctx, "git-bundle-server update exited with status %d", exitCode)
6865
}
66+
fmt.Print("\n")
6967
}
7068

7169
return nil

0 commit comments

Comments
 (0)