@@ -2,11 +2,12 @@ package main
2
2
3
3
import (
4
4
"context"
5
- "os"
6
- "os/exec"
5
+ "fmt"
7
6
8
7
"github.com/github/git-bundle-server/cmd/utils"
9
8
"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"
10
11
"github.com/github/git-bundle-server/internal/core"
11
12
"github.com/github/git-bundle-server/internal/log"
12
13
)
@@ -37,13 +38,15 @@ func (u *updateAllCmd) Run(ctx context.Context, args []string) error {
37
38
parser .Parse (ctx , args )
38
39
39
40
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 )
40
43
41
44
repos , err := repoProvider .GetRepositories (ctx )
42
45
if err != nil {
43
46
return u .logger .Error (ctx , err )
44
47
}
45
48
46
- exe , err := os . Executable ( )
49
+ exe , err := fileSystem . GetLocalExecutable ( "git-bundle-server" )
47
50
if err != nil {
48
51
return u .logger .Errorf (ctx , "failed to get path to execuable: %w" , err )
49
52
}
@@ -53,19 +56,14 @@ func (u *updateAllCmd) Run(ctx context.Context, args []string) error {
53
56
54
57
for route := range repos {
55
58
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 ... )
66
61
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 )
68
65
}
66
+ fmt .Print ("\n " )
69
67
}
70
68
71
69
return nil
0 commit comments