func getBlueprintRequirements()

in cli/bpmetadata/tfconfig.go [343:396]


func getBlueprintRequirements(rolesConfigPath, servicesConfigPath, versionsConfigPath string) (*BlueprintRequirements, error) {
	//parse blueprint roles
	p := hclparse.NewParser()
	rolesFile, diags := p.ParseHCLFile(rolesConfigPath)
	err := hasHclErrors(diags)
	if err != nil {
		return nil, err
	}

	r, err := parseBlueprintRoles(rolesFile)
	if err != nil {
		return nil, err
	}

	//parse blueprint services
	servicesFile, diags := p.ParseHCLFile(servicesConfigPath)
	err = hasHclErrors(diags)
	if err != nil {
		return nil, err
	}

	s, err := parseBlueprintServices(servicesFile)
	if err != nil {
		return nil, err
	}

	versionCfgFileExists, _ := fileExists(versionsConfigPath)

	if !versionCfgFileExists {
		return &BlueprintRequirements{
			Roles:    r,
			Services: s,
		}, nil
	}

	//parse blueprint provider versions
	versionsFile, diags := p.ParseHCLFile(versionsConfigPath)
	err = hasHclErrors(diags)
	if err != nil {
		return nil, err
	}

	v, err := parseBlueprintProviderVersions(versionsFile)
	if err != nil {
		return nil, err
	}

	return &BlueprintRequirements{
		Roles:            r,
		Services:         s,
		ProviderVersions: v,
	}, nil

}