diff --git a/internal/module/service.go b/internal/module/service.go index c8b2524a..2dd6364c 100644 --- a/internal/module/service.go +++ b/internal/module/service.go @@ -152,8 +152,8 @@ func (s *Service) loadTerragruntDependenciesFromDigraph(r io.Reader) error { continue } // Convert dependency paths to module IDs - dependencyIDs := make([]resource.ID, len(depPaths)) - for i, path := range depPaths { + dependencyIDs := make([]resource.ID, 0, len(depPaths)) + for _, path := range depPaths { // If absolute path then convert to path relative to pug's working // directory. if filepath.IsAbs(path) { @@ -176,7 +176,7 @@ func (s *Service) loadTerragruntDependenciesFromDigraph(r io.Reader) error { // Skip loading this dependency continue } - dependencyIDs[i] = mod.ID + dependencyIDs = append(dependencyIDs, mod.ID) } s.table.Update(mod.ID, func(existing *Module) error { existing.Common = existing.WithDependencies(dependencyIDs...) diff --git a/internal/module/service_test.go b/internal/module/service_test.go index 6a9e6137..cbc94857 100644 --- a/internal/module/service_test.go +++ b/internal/module/service_test.go @@ -6,6 +6,7 @@ import ( "testing" "github.com/leg100/pug/internal" + "github.com/leg100/pug/internal/logging" "github.com/leg100/pug/internal/resource" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" @@ -22,6 +23,7 @@ func TestLoadTerragruntDependenciesFromDigraph(t *testing.T) { svc := &Service{ table: &fakeModuleTable{modules: []*Module{vpc, redis, mysql, backend, frontend}}, workdir: workdir, + logger: logging.Discard, } // Check it can handle both relative and absolute paths - `terragrunt @@ -50,11 +52,13 @@ digraph { "%[1]s/root/backend-app" -> "%[1]s/root/mysql"; "%[1]s/root/backend-app" -> "%[1]s/root/redis"; "%[1]s/root/backend-app" -> "%[1]s/root/vpc"; + "%[1]s/root/backend-app" -> "/outside_workdir/kafka"; "%[1]s/root/mysql" ; "%[1]s/root/mysql" -> "%[1]s/root/vpc"; "%[1]s/root/redis" ; "%[1]s/root/redis" -> "%[1]s/root/vpc"; "%[1]s/root/vpc" ; + "/outside_workdir/kafka" ; } `, workdir) ) diff --git a/internal/tui/module/list.go b/internal/tui/module/list.go index 05658ce2..7c389c07 100644 --- a/internal/tui/module/list.go +++ b/internal/tui/module/list.go @@ -67,10 +67,15 @@ func (m *ListMaker) Make(_ resource.ID, width, height int) (tea.Model, error) { currentWorkspace.Key: m.Helpers.CurrentWorkspaceName(mod.CurrentWorkspaceID), table.ResourceCountColumn.Key: m.Helpers.ModuleCurrentResourceCount(mod), } - dependencyNames := make([]string, len(mod.Dependencies())) - for i, id := range mod.Dependencies() { - mod, _ := m.ModuleService.Get(id) - dependencyNames[i] = mod.Path + dependencyNames := make([]string, 0, len(mod.Dependencies())) + for _, id := range mod.Dependencies() { + mod, err := m.ModuleService.Get(id) + if err != nil { + // Should never happen + dependencyNames = append(dependencyNames, fmt.Sprintf("error: %s", err.Error())) + continue + } + dependencyNames = append(dependencyNames, mod.Path) } row[dependencies.Key] = strings.Join(dependencyNames, ",") return row