Skip to content

Commit aa374ce

Browse files
authored
fix: service path detection (#24)
1 parent bae7621 commit aa374ce

29 files changed

+3418
-332
lines changed

.mockery.yaml

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -11,3 +11,9 @@ packages:
1111
github.com/pilat/devbox/internal/git:
1212
interfaces:
1313
CommandRunner:
14+
Service:
15+
github.com/pilat/devbox/internal/pkg/fs:
16+
interfaces:
17+
FileSystem:
18+
FileInfo:
19+
DirEntry:

cmd/devbox/destroy.go

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

7-
"github.com/pilat/devbox/internal/manager"
87
"github.com/pilat/devbox/internal/project"
98
"github.com/spf13/cobra"
109
)
@@ -18,7 +17,7 @@ func init() {
1817
return []string{}, cobra.ShellCompDirectiveNoFileComp
1918
}),
2019
RunE: runWrapper(func(ctx context.Context, cmd *cobra.Command, args []string) error {
21-
p, err := manager.AutodetectProject(projectName)
20+
p, err := mgr.AutodetectProject(ctx, projectName)
2221
if err != nil {
2322
return err
2423
}
@@ -42,7 +41,7 @@ func init() {
4241

4342
func runDestroy(ctx context.Context, p *project.Project) error {
4443
fmt.Println("[*] Removing project...")
45-
if err := manager.Destroy(ctx, p); err != nil {
44+
if err := mgr.Destroy(ctx, p); err != nil {
4645
return fmt.Errorf("failed to remove project: %w", err)
4746
}
4847

cmd/devbox/devbox.go

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -20,6 +20,7 @@ var projectName string
2020

2121
var dockerClient client.APIClient
2222
var apiService api.Compose
23+
var mgr *manager.Manager
2324

2425
func main() {
2526
for _, fn := range []func() error{
@@ -39,7 +40,8 @@ func initCobra() error {
3940
root.PersistentFlags().StringVarP(&projectName, "name", "n", "", "Project name")
4041

4142
_ = root.RegisterFlagCompletionFunc("name", func(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) {
42-
return manager.ListProjects(toComplete), cobra.ShellCompDirectiveNoFileComp
43+
projects, _ := mgr.List(toComplete)
44+
return projects, cobra.ShellCompDirectiveNoFileComp
4345
})
4446

4547
return root.Execute()
@@ -60,14 +62,16 @@ func initDocker() error {
6062

6163
apiService = compose.NewComposeService(dockerCLI)
6264

65+
mgr = manager.New()
66+
6367
return nil
6468
}
6569

6670
func validArgsWrapper(f func(ctx context.Context, cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective)) func(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) {
6771
return func(cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) {
6872
ctx := context.Background()
6973

70-
_, err := manager.AutodetectProject(projectName)
74+
_, err := mgr.AutodetectProject(ctx, projectName)
7175

7276
if err != nil && !cmd.Flags().Changed("name") { // not auto-detected and name is not even mentioned
7377
return []string{"--name"}, cobra.ShellCompDirectiveNoFileComp

cmd/devbox/down.go

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

7-
"github.com/pilat/devbox/internal/manager"
87
"github.com/pilat/devbox/internal/project"
98
"github.com/spf13/cobra"
109
)
@@ -18,7 +17,7 @@ func init() {
1817
return []string{}, cobra.ShellCompDirectiveNoFileComp
1918
}),
2019
RunE: runWrapper(func(ctx context.Context, cmd *cobra.Command, args []string) error {
21-
p, err := manager.AutodetectProject(projectName)
20+
p, err := mgr.AutodetectProject(ctx, projectName)
2221
if err != nil {
2322
return err
2423
}

cmd/devbox/env.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import (
77
"os/exec"
88
"path/filepath"
99

10-
"github.com/pilat/devbox/internal/manager"
1110
"github.com/pilat/devbox/internal/project"
1211
"github.com/spf13/cobra"
1312
)
@@ -27,7 +26,7 @@ func init() {
2726
return []string{}, cobra.ShellCompDirectiveNoFileComp
2827
}),
2928
RunE: runWrapper(func(ctx context.Context, cmd *cobra.Command, args []string) error {
30-
project, err := manager.AutodetectProject(projectName)
29+
project, err := mgr.AutodetectProject(ctx, projectName)
3130
if err != nil {
3231
return fmt.Errorf("failed to detect project: %w", err)
3332
}

cmd/devbox/info.go

Lines changed: 1 addition & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,6 @@ import (
88

99
"github.com/pilat/devbox/internal/app"
1010
"github.com/pilat/devbox/internal/git"
11-
"github.com/pilat/devbox/internal/manager"
1211
"github.com/pilat/devbox/internal/project"
1312
"github.com/pilat/devbox/internal/table"
1413
"github.com/spf13/cobra"
@@ -24,7 +23,7 @@ func init() {
2423
return []string{}, cobra.ShellCompDirectiveNoFileComp
2524
}),
2625
RunE: runWrapper(func(ctx context.Context, cmd *cobra.Command, args []string) error {
27-
p, err := manager.AutodetectProject(projectName)
26+
p, err := mgr.AutodetectProject(ctx, projectName)
2827
if err != nil {
2928
return err
3029
}

cmd/devbox/init.go

Lines changed: 4 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -6,7 +6,6 @@ import (
66
"os"
77
"strings"
88

9-
"github.com/pilat/devbox/internal/manager"
109
"github.com/spf13/cobra"
1110
)
1211

@@ -31,8 +30,8 @@ func init() {
3130
projectName = guessName(gitURL)
3231
}
3332

34-
if err := runInit(projectName, gitURL, branch); err != nil {
35-
return fmt.Errorf("failed to list projects: %w", err)
33+
if err := runInit(ctx, projectName, gitURL, branch); err != nil {
34+
return fmt.Errorf("failed to initialize project: %w", err)
3635
}
3736

3837
return nil
@@ -45,9 +44,9 @@ func init() {
4544
root.AddCommand(cmd)
4645
}
4746

48-
func runInit(name, gitURL, branch string) error {
47+
func runInit(ctx context.Context, name, gitURL, branch string) error {
4948
fmt.Println("[*] Initializing project...")
50-
if err := manager.Init(name, gitURL, branch); err != nil {
49+
if err := mgr.Init(ctx, name, gitURL, branch); err != nil {
5150
return fmt.Errorf("failed to init project: %w", err)
5251
}
5352

cmd/devbox/install_ca.go

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

7-
"github.com/pilat/devbox/internal/manager"
87
"github.com/spf13/cobra"
98
)
109

@@ -17,7 +16,7 @@ func init() {
1716
return []string{}, cobra.ShellCompDirectiveNoFileComp
1817
}),
1918
RunE: runWrapper(func(ctx context.Context, cmd *cobra.Command, args []string) error {
20-
p, err := manager.AutodetectProject(projectName)
19+
p, err := mgr.AutodetectProject(ctx, projectName)
2120
if err != nil {
2221
return err
2322
}

cmd/devbox/list.go

Lines changed: 7 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -5,8 +5,6 @@ import (
55
"fmt"
66

77
"github.com/pilat/devbox/internal/git"
8-
"github.com/pilat/devbox/internal/manager"
9-
"github.com/pilat/devbox/internal/project"
108
"github.com/pilat/devbox/internal/table"
119
"github.com/spf13/cobra"
1210
)
@@ -35,16 +33,19 @@ func runList(ctx context.Context, filter string) error {
3533
fmt.Println("")
3634
fmt.Println(" Projects:")
3735

38-
projects := manager.ListProjects(filter)
36+
projectNames, err := mgr.List(filter)
37+
if err != nil {
38+
return fmt.Errorf("failed to list projects: %w", err)
39+
}
3940

4041
t := table.New("Name", "Message", "Author", "Date")
41-
for _, projectName := range projects {
42-
app, err := project.New(ctx, projectName, []string{"*"})
42+
for _, projectName := range projectNames {
43+
proj, err := mgr.Load(ctx, projectName, []string{"*"})
4344
if err != nil {
4445
return fmt.Errorf("failed to get project: %w", err)
4546
}
4647

47-
g := git.New(app.WorkingDir)
48+
g := git.New(proj.WorkingDir)
4849
info, err := g.GetInfo(ctx)
4950
if err != nil {
5051
return fmt.Errorf("failed to get git info: %w", err)

cmd/devbox/logs.go

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -7,7 +7,6 @@ import (
77

88
"github.com/docker/cli/cli/streams"
99
"github.com/docker/compose/v2/cmd/formatter"
10-
"github.com/pilat/devbox/internal/manager"
1110
"github.com/pilat/devbox/internal/project"
1211
"github.com/spf13/cobra"
1312
)
@@ -19,7 +18,7 @@ func init() {
1918
Long: "That command will show logs of services in devbox project",
2019
Args: cobra.MinimumNArgs(0),
2120
ValidArgsFunction: validArgsWrapper(func(ctx context.Context, cmd *cobra.Command, args []string, toComplete string) ([]string, cobra.ShellCompDirective) {
22-
p, err := manager.AutodetectProject(projectName)
21+
p, err := mgr.AutodetectProject(ctx, projectName)
2322
if err != nil {
2423
return []string{}, cobra.ShellCompDirectiveNoFileComp
2524
}
@@ -32,7 +31,7 @@ func init() {
3231
return results, cobra.ShellCompDirectiveNoFileComp
3332
}),
3433
RunE: runWrapper(func(ctx context.Context, cmd *cobra.Command, args []string) error {
35-
p, err := manager.AutodetectProject(projectName)
34+
p, err := mgr.AutodetectProject(ctx, projectName)
3635
if err != nil {
3736
return err
3837
}

0 commit comments

Comments
 (0)