in astro/terraform/terraform_init.go [65:106]
func (s *Session) Init() (Result, error) {
logger.Trace.Printf("terraform: initializing module in directory: %v\n", s.moduleDir)
terraformVersion, err := s.versionCached()
if err != nil {
return nil, err
}
// If we're on 0.8.x and lower and there is no backend config, we
// can skip straight to the `terraform get`. No init required.
if VersionMatches(terraformVersion, "< 0.9") && s.config.Remote.Backend == "" {
return s.Get()
}
var args []string
if VersionMatches(terraformVersion, "< 0.9") {
args, err = s.terraformInitArgsLegacy()
if err != nil {
return nil, err
}
} else {
args, err = s.terraformInitArgsModern()
if err != nil {
return nil, err
}
}
process, err := s.terraformCommand(args, []int{0})
if err != nil {
return nil, err
}
if err := process.Run(); err != nil {
logger.Trace.Printf("terraform: init failed: %v\n", err)
return &terraformResult{
process: process,
}, err
}
return s.Get()
}