@@ -2,11 +2,12 @@ package main
22
33import (
44 "context"
5- "os"
6- "os/exec"
5+ "fmt"
76
87 "github.com/github/git-bundle-server/cmd/utils"
98 "github.com/github/git-bundle-server/internal/argparse"
9+ "github.com/github/git-bundle-server/internal/cmd"
10+ "github.com/github/git-bundle-server/internal/common"
1011 "github.com/github/git-bundle-server/internal/core"
1112 "github.com/github/git-bundle-server/internal/log"
1213)
@@ -37,13 +38,15 @@ func (u *updateAllCmd) Run(ctx context.Context, args []string) error {
3738 parser .Parse (ctx , args )
3839
3940 repoProvider := utils .GetDependency [core.RepositoryProvider ](ctx , u .container )
41+ fileSystem := utils .GetDependency [common.FileSystem ](ctx , u .container )
42+ commandExecutor := utils .GetDependency [cmd.CommandExecutor ](ctx , u .container )
4043
4144 repos , err := repoProvider .GetRepositories (ctx )
4245 if err != nil {
4346 return u .logger .Error (ctx , err )
4447 }
4548
46- exe , err := os . Executable ( )
49+ exe , err := fileSystem . GetLocalExecutable ( "git-bundle-server" )
4750 if err != nil {
4851 return u .logger .Errorf (ctx , "failed to get path to execuable: %w" , err )
4952 }
@@ -53,19 +56,14 @@ func (u *updateAllCmd) Run(ctx context.Context, args []string) error {
5356
5457 for route := range repos {
5558 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 ()
59+ fmt .Printf ("*** Updating %s ***\n " , route )
60+ exitCode , err := commandExecutor .RunStdout (ctx , exe , subargs ... )
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