func()

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()
}