github.com/khulnasoft-lab/defsec@v1.0.5-0.20230827010352-5e9f46893d95/internal/adapters/terraform/github/repositories/adapt.go (about) 1 package repositories 2 3 import ( 4 "github.com/khulnasoft-lab/defsec/pkg/providers/github" 5 "github.com/khulnasoft-lab/defsec/pkg/terraform" 6 "github.com/khulnasoft-lab/defsec/pkg/types" 7 ) 8 9 func Adapt(modules terraform.Modules) []github.Repository { 10 return adaptRepositories(modules) 11 } 12 13 func adaptRepositories(modules terraform.Modules) []github.Repository { 14 var repositories []github.Repository 15 for _, module := range modules { 16 for _, resource := range module.GetResourcesByType("github_repository") { 17 repositories = append(repositories, adaptRepository(resource)) 18 } 19 } 20 return repositories 21 } 22 23 func adaptRepository(resource *terraform.Block) github.Repository { 24 25 repo := github.Repository{ 26 Metadata: resource.GetMetadata(), 27 Public: types.Bool(true, resource.GetMetadata()), 28 VulnerabilityAlerts: resource.GetAttribute("vulnerability_alerts").AsBoolValueOrDefault(false, resource), 29 Archived: resource.GetAttribute("archived").AsBoolValueOrDefault(false, resource), 30 } 31 32 privateAttr := resource.GetAttribute("private") 33 if privateAttr.IsTrue() { 34 repo.Public = types.Bool(false, privateAttr.GetMetadata()) 35 } else if privateAttr.IsFalse() { 36 repo.Public = types.Bool(true, privateAttr.GetMetadata()) 37 } 38 39 // visibility overrides private 40 visibilityAttr := resource.GetAttribute("visibility") 41 if visibilityAttr.Equals("private") || visibilityAttr.Equals("internal") { 42 repo.Public = types.Bool(false, visibilityAttr.GetMetadata()) 43 } else if visibilityAttr.Equals("public") { 44 repo.Public = types.Bool(true, visibilityAttr.GetMetadata()) 45 } 46 47 return repo 48 }