Skip to content

Commit 2bee23e

Browse files
authored
Merge pull request #29 from github/vdye/region-tracing
Logging Part 2: region tracing
2 parents bec0c2f + 01d39ac commit 2bee23e

File tree

20 files changed

+532
-139
lines changed

20 files changed

+532
-139
lines changed

cmd/git-bundle-server/delete.go

Lines changed: 10 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,21 @@ import (
44
"context"
55
"os"
66

7+
"github.com/github/git-bundle-server/cmd/utils"
78
"github.com/github/git-bundle-server/internal/argparse"
89
"github.com/github/git-bundle-server/internal/core"
910
"github.com/github/git-bundle-server/internal/log"
1011
)
1112

1213
type deleteCmd struct {
13-
logger log.TraceLogger
14+
logger log.TraceLogger
15+
container *utils.DependencyContainer
1416
}
1517

16-
func NewDeleteCommand(logger log.TraceLogger) argparse.Subcommand {
18+
func NewDeleteCommand(logger log.TraceLogger, container *utils.DependencyContainer) argparse.Subcommand {
1719
return &deleteCmd{
18-
logger: logger,
20+
logger: logger,
21+
container: container,
1922
}
2023
}
2124

@@ -34,12 +37,14 @@ func (d *deleteCmd) Run(ctx context.Context, args []string) error {
3437
route := parser.PositionalString("route", "the route to delete")
3538
parser.Parse(ctx, args)
3639

37-
repo, err := core.CreateRepository(*route)
40+
repoProvider := utils.GetDependency[core.RepositoryProvider](ctx, d.container)
41+
42+
repo, err := repoProvider.CreateRepository(ctx, *route)
3843
if err != nil {
3944
return d.logger.Error(ctx, err)
4045
}
4146

42-
err = core.RemoveRoute(*route)
47+
err = repoProvider.RemoveRoute(ctx, *route)
4348
if err != nil {
4449
return d.logger.Error(ctx, err)
4550
}

cmd/git-bundle-server/init.go

Lines changed: 13 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,6 +4,7 @@ import (
44
"context"
55
"fmt"
66

7+
"github.com/github/git-bundle-server/cmd/utils"
78
"github.com/github/git-bundle-server/internal/argparse"
89
"github.com/github/git-bundle-server/internal/bundles"
910
"github.com/github/git-bundle-server/internal/core"
@@ -12,12 +13,14 @@ import (
1213
)
1314

1415
type initCmd struct {
15-
logger log.TraceLogger
16+
logger log.TraceLogger
17+
container *utils.DependencyContainer
1618
}
1719

18-
func NewInitCommand(logger log.TraceLogger) argparse.Subcommand {
20+
func NewInitCommand(logger log.TraceLogger, container *utils.DependencyContainer) argparse.Subcommand {
1921
return &initCmd{
20-
logger: logger,
22+
logger: logger,
23+
container: container,
2124
}
2225
}
2326

@@ -38,7 +41,10 @@ func (i *initCmd) Run(ctx context.Context, args []string) error {
3841
route := parser.PositionalString("route", "the route to host the specified repo")
3942
parser.Parse(ctx, args)
4043

41-
repo, err := core.CreateRepository(*route)
44+
repoProvider := utils.GetDependency[core.RepositoryProvider](ctx, i.container)
45+
bundleProvider := utils.GetDependency[bundles.BundleProvider](ctx, i.container)
46+
47+
repo, err := repoProvider.CreateRepository(ctx, *route)
4248
if err != nil {
4349
return i.logger.Error(ctx, err)
4450
}
@@ -60,7 +66,7 @@ func (i *initCmd) Run(ctx context.Context, args []string) error {
6066
return i.logger.Errorf(ctx, "failed to fetch latest refs: %w", gitErr)
6167
}
6268

63-
bundle := bundles.CreateInitialBundle(repo)
69+
bundle := bundleProvider.CreateInitialBundle(ctx, repo)
6470
fmt.Printf("Constructing base bundle file at %s\n", bundle.Filename)
6571

6672
written, gitErr := git.CreateBundle(repo.RepoDir, bundle.Filename)
@@ -71,8 +77,8 @@ func (i *initCmd) Run(ctx context.Context, args []string) error {
7177
return i.logger.Errorf(ctx, "refused to write empty bundle. Is the repo empty?")
7278
}
7379

74-
list := bundles.CreateSingletonList(bundle)
75-
listErr := bundles.WriteBundleList(list, repo)
80+
list := bundleProvider.CreateSingletonList(ctx, bundle)
81+
listErr := bundleProvider.WriteBundleList(ctx, list, repo)
7682
if listErr != nil {
7783
return i.logger.Errorf(ctx, "failed to write bundle list: %w", listErr)
7884
}

cmd/git-bundle-server/main.go

Lines changed: 10 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,22 @@ import (
44
"context"
55
"os"
66

7+
"github.com/github/git-bundle-server/cmd/utils"
78
"github.com/github/git-bundle-server/internal/argparse"
89
"github.com/github/git-bundle-server/internal/log"
910
)
1011

1112
func all(logger log.TraceLogger) []argparse.Subcommand {
13+
container := utils.BuildGitBundleServerContainer(logger)
14+
1215
return []argparse.Subcommand{
13-
NewDeleteCommand(logger),
14-
NewInitCommand(logger),
15-
NewStartCommand(logger),
16-
NewStopCommand(logger),
17-
NewUpdateCommand(logger),
18-
NewUpdateAllCommand(logger),
19-
NewWebServerCommand(logger),
16+
NewDeleteCommand(logger, container),
17+
NewInitCommand(logger, container),
18+
NewStartCommand(logger, container),
19+
NewStopCommand(logger, container),
20+
NewUpdateCommand(logger, container),
21+
NewUpdateAllCommand(logger, container),
22+
NewWebServerCommand(logger, container),
2023
}
2124
}
2225

cmd/git-bundle-server/start.go

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -4,18 +4,21 @@ import (
44
"context"
55
"os"
66

7+
"github.com/github/git-bundle-server/cmd/utils"
78
"github.com/github/git-bundle-server/internal/argparse"
89
"github.com/github/git-bundle-server/internal/core"
910
"github.com/github/git-bundle-server/internal/log"
1011
)
1112

1213
type startCmd struct {
13-
logger log.TraceLogger
14+
logger log.TraceLogger
15+
container *utils.DependencyContainer
1416
}
1517

16-
func NewStartCommand(logger log.TraceLogger) argparse.Subcommand {
18+
func NewStartCommand(logger log.TraceLogger, container *utils.DependencyContainer) argparse.Subcommand {
1719
return &startCmd{
18-
logger: logger,
20+
logger: logger,
21+
container: container,
1922
}
2023
}
2124

@@ -34,8 +37,10 @@ func (s *startCmd) Run(ctx context.Context, args []string) error {
3437
route := parser.PositionalString("route", "the route for which bundles should be generated")
3538
parser.Parse(ctx, args)
3639

40+
repoProvider := utils.GetDependency[core.RepositoryProvider](ctx, s.container)
41+
3742
// CreateRepository registers the route.
38-
repo, err := core.CreateRepository(*route)
43+
repo, err := repoProvider.CreateRepository(ctx, *route)
3944
if err != nil {
4045
return s.logger.Error(ctx, err)
4146
}

cmd/git-bundle-server/stop.go

Lines changed: 9 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,18 +3,21 @@ package main
33
import (
44
"context"
55

6+
"github.com/github/git-bundle-server/cmd/utils"
67
"github.com/github/git-bundle-server/internal/argparse"
78
"github.com/github/git-bundle-server/internal/core"
89
"github.com/github/git-bundle-server/internal/log"
910
)
1011

1112
type stopCmd struct {
12-
logger log.TraceLogger
13+
logger log.TraceLogger
14+
container *utils.DependencyContainer
1315
}
1416

15-
func NewStopCommand(logger log.TraceLogger) argparse.Subcommand {
17+
func NewStopCommand(logger log.TraceLogger, container *utils.DependencyContainer) argparse.Subcommand {
1618
return &stopCmd{
17-
logger: logger,
19+
logger: logger,
20+
container: container,
1821
}
1922
}
2023

@@ -33,7 +36,9 @@ func (s *stopCmd) Run(ctx context.Context, args []string) error {
3336
route := parser.PositionalString("route", "the route for which bundles should stop being generated")
3437
parser.Parse(ctx, args)
3538

36-
err := core.RemoveRoute(*route)
39+
repoProvider := utils.GetDependency[core.RepositoryProvider](ctx, s.container)
40+
41+
err := repoProvider.RemoveRoute(ctx, *route)
3742
if err != nil {
3843
s.logger.Error(ctx, err)
3944
}

cmd/git-bundle-server/update-all.go

Lines changed: 12 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -5,19 +5,21 @@ import (
55
"os"
66
"os/exec"
77

8+
"github.com/github/git-bundle-server/cmd/utils"
89
"github.com/github/git-bundle-server/internal/argparse"
9-
"github.com/github/git-bundle-server/internal/common"
1010
"github.com/github/git-bundle-server/internal/core"
1111
"github.com/github/git-bundle-server/internal/log"
1212
)
1313

1414
type updateAllCmd struct {
15-
logger log.TraceLogger
15+
logger log.TraceLogger
16+
container *utils.DependencyContainer
1617
}
1718

18-
func NewUpdateAllCommand(logger log.TraceLogger) argparse.Subcommand {
19+
func NewUpdateAllCommand(logger log.TraceLogger, container *utils.DependencyContainer) argparse.Subcommand {
1920
return &updateAllCmd{
20-
logger: logger,
21+
logger: logger,
22+
container: container,
2123
}
2224
}
2325

@@ -31,23 +33,19 @@ For every configured route, run 'git-bundle-server update <options> <route>'.`
3133
}
3234

3335
func (u *updateAllCmd) Run(ctx context.Context, args []string) error {
34-
user, err := common.NewUserProvider().CurrentUser()
35-
if err != nil {
36-
return u.logger.Error(ctx, err)
37-
}
38-
fs := common.NewFileSystem()
39-
4036
parser := argparse.NewArgParser(u.logger, "git-bundle-server update-all")
4137
parser.Parse(ctx, args)
4238

43-
exe, err := os.Executable()
39+
repoProvider := utils.GetDependency[core.RepositoryProvider](ctx, u.container)
40+
41+
repos, err := repoProvider.GetRepositories(ctx)
4442
if err != nil {
45-
return u.logger.Errorf(ctx, "failed to get path to execuable: %w", err)
43+
return u.logger.Error(ctx, err)
4644
}
4745

48-
repos, err := core.GetRepositories(user, fs)
46+
exe, err := os.Executable()
4947
if err != nil {
50-
return u.logger.Error(ctx, err)
48+
return u.logger.Errorf(ctx, "failed to get path to execuable: %w", err)
5149
}
5250

5351
subargs := []string{"update", ""}

cmd/git-bundle-server/update.go

Lines changed: 14 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -4,19 +4,22 @@ import (
44
"context"
55
"fmt"
66

7+
"github.com/github/git-bundle-server/cmd/utils"
78
"github.com/github/git-bundle-server/internal/argparse"
89
"github.com/github/git-bundle-server/internal/bundles"
910
"github.com/github/git-bundle-server/internal/core"
1011
"github.com/github/git-bundle-server/internal/log"
1112
)
1213

1314
type updateCmd struct {
14-
logger log.TraceLogger
15+
logger log.TraceLogger
16+
container *utils.DependencyContainer
1517
}
1618

17-
func NewUpdateCommand(logger log.TraceLogger) argparse.Subcommand {
19+
func NewUpdateCommand(logger log.TraceLogger, container *utils.DependencyContainer) argparse.Subcommand {
1820
return &updateCmd{
19-
logger: logger,
21+
logger: logger,
22+
container: container,
2023
}
2124
}
2225

@@ -36,18 +39,21 @@ func (u *updateCmd) Run(ctx context.Context, args []string) error {
3639
route := parser.PositionalString("route", "the route to update")
3740
parser.Parse(ctx, args)
3841

39-
repo, err := core.CreateRepository(*route)
42+
repoProvider := utils.GetDependency[core.RepositoryProvider](ctx, u.container)
43+
bundleProvider := utils.GetDependency[bundles.BundleProvider](ctx, u.container)
44+
45+
repo, err := repoProvider.CreateRepository(ctx, *route)
4046
if err != nil {
4147
return u.logger.Error(ctx, err)
4248
}
4349

44-
list, err := bundles.GetBundleList(repo)
50+
list, err := bundleProvider.GetBundleList(ctx, repo)
4551
if err != nil {
4652
return u.logger.Errorf(ctx, "failed to load bundle list: %w", err)
4753
}
4854

4955
fmt.Printf("Creating new incremental bundle\n")
50-
bundle, err := bundles.CreateIncrementalBundle(repo, list)
56+
bundle, err := bundleProvider.CreateIncrementalBundle(ctx, repo, list)
5157
if err != nil {
5258
return u.logger.Error(ctx, err)
5359
}
@@ -60,13 +66,13 @@ func (u *updateCmd) Run(ctx context.Context, args []string) error {
6066
list.Bundles[bundle.CreationToken] = *bundle
6167

6268
fmt.Printf("Collapsing bundle list\n")
63-
err = bundles.CollapseList(repo, list)
69+
err = bundleProvider.CollapseList(ctx, repo, list)
6470
if err != nil {
6571
return u.logger.Error(ctx, err)
6672
}
6773

6874
fmt.Printf("Writing updated bundle list\n")
69-
listErr := bundles.WriteBundleList(list, repo)
75+
listErr := bundleProvider.WriteBundleList(ctx, list, repo)
7076
if listErr != nil {
7177
return u.logger.Errorf(ctx, "failed to write bundle list: %w", listErr)
7278
}

cmd/git-bundle-server/web-server.go

Lines changed: 9 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -17,19 +17,14 @@ import (
1717
)
1818

1919
type webServerCmd struct {
20-
logger log.TraceLogger
21-
user common.UserProvider
22-
cmdExec common.CommandExecutor
23-
fileSystem common.FileSystem
20+
logger log.TraceLogger
21+
container *utils.DependencyContainer
2422
}
2523

26-
func NewWebServerCommand(logger log.TraceLogger) argparse.Subcommand {
27-
// Create subcommand-specific dependencies
24+
func NewWebServerCommand(logger log.TraceLogger, container *utils.DependencyContainer) argparse.Subcommand {
2825
return &webServerCmd{
29-
logger: logger,
30-
user: common.NewUserProvider(),
31-
cmdExec: common.NewCommandExecutor(),
32-
fileSystem: common.NewFileSystem(),
26+
logger: logger,
27+
container: container,
3328
}
3429
}
3530

@@ -64,7 +59,8 @@ func (w *webServerCmd) getDaemonConfig(ctx context.Context) (*daemon.DaemonConfi
6459
}
6560

6661
programPath = filepath.Join(exeDir, "git-bundle-web-server")
67-
programExists, err := w.fileSystem.FileExists(programPath)
62+
fileSystem := utils.GetDependency[common.FileSystem](ctx, w.container)
63+
programExists, err := fileSystem.FileExists(programPath)
6864
if err != nil {
6965
return nil, w.logger.Errorf(ctx, "could not determine whether path to 'git-bundle-web-server' exists: %w", err)
7066
} else if !programExists {
@@ -97,10 +93,7 @@ func (w *webServerCmd) startServer(ctx context.Context, args []string) error {
9793
parser.Parse(ctx, args)
9894
validate(ctx)
9995

100-
d, err := daemon.NewDaemonProvider(w.logger, w.user, w.cmdExec, w.fileSystem)
101-
if err != nil {
102-
return w.logger.Error(ctx, err)
103-
}
96+
d := utils.GetDependency[daemon.DaemonProvider](ctx, w.container)
10497

10598
config, err := w.getDaemonConfig(ctx)
10699
if err != nil {
@@ -153,10 +146,7 @@ func (w *webServerCmd) stopServer(ctx context.Context, args []string) error {
153146
remove := parser.Bool("remove", false, "Remove the web server daemon configuration from the system after stopping")
154147
parser.Parse(ctx, args)
155148

156-
d, err := daemon.NewDaemonProvider(w.logger, w.user, w.cmdExec, w.fileSystem)
157-
if err != nil {
158-
return w.logger.Error(ctx, err)
159-
}
149+
d := utils.GetDependency[daemon.DaemonProvider](ctx, w.container)
160150

161151
config, err := w.getDaemonConfig(ctx)
162152
if err != nil {

0 commit comments

Comments
 (0)