in generate/generate.go [82:126]
func (rg *ResourceGenerator) Generate() error {
// Process the primary template first, since the primary template resources
// are added to the JSON schema for fragment transform specs
fmt.Printf("Downloading cloudformation specification from %s\n", rg.primaryURL)
primaryData, err := rg.downloadSpec(rg.primaryURL)
if err != nil {
return err
}
primarySpec, err := rg.processSpec("cloudformation", primaryData)
if err != nil {
return err
}
if err := rg.generateJSONSchema("cloudformation", primarySpec); err != nil {
return err
}
for name, url := range rg.fragmentUrls {
fmt.Printf("Downloading %s specification from %s\n", name, url)
data, err := rg.downloadSpec(url)
if err != nil {
return err
}
spec, err := rg.processSpec(name, data)
if err != nil {
return err
}
// Append main CloudFormation schema resource types and property types to this fragment
for k, v := range primarySpec.Resources {
spec.Resources[k] = v
}
for k, v := range primarySpec.Properties {
spec.Properties[k] = v
}
if err := rg.generateJSONSchema(name, spec); err != nil {
return err
}
}
if err := rg.generateAllResourcesMap(rg.Results.AllResources); err != nil {
return err
}
return nil
}