func()

in generate/generate.go [160:232]


func (rg *ResourceGenerator) processSpec(specname string, data []byte) (*CloudFormationResourceSpecification, error) {

	// Unmarshall the JSON specification
	spec := &CloudFormationResourceSpecification{}
	if err := json.Unmarshal(data, spec); err != nil {
		return nil, err
	}

	// Add the resources processed to the ResourceGenerator output
	for name := range spec.Resources {

		sname, err := structName(name)
		if err != nil {
			return nil, err
		}

		pname, err := packageName(name, true)
		if err != nil {
			return nil, err
		}

		basename, err := packageName(name, false)
		if err != nil {
			return nil, err
		}

		rg.Results.AllResources = append(rg.Results.AllResources, GeneratedResource{
			Name:        name,
			BaseName:    basename,
			PackageName: pname,
			StructName:  sname,
			Global:      false,
		})
	}

	// Add the globals processed to the ResourceGenerator output
	for name := range spec.Globals.Children {

		pname, basename, sname := "global", name, name

		rg.Results.AllResources = append(rg.Results.AllResources, GeneratedResource{
			Name:        name,
			BaseName:    basename,
			PackageName: pname,
			StructName:  sname,
			Global:      true,
		})
	}

	// Write all of the resources in the spec file
	for name, resource := range spec.Resources {
		if err := rg.generateResources(name, resource, false, spec); err != nil {
			return nil, err
		}
	}

	// Write all of the custom types in the spec file
	for name, resource := range spec.Properties {
		if err := rg.generateResources(name, resource, true, spec); err != nil {
			return nil, err
		}
	}

	// Write all of the globals in the spec file
	for name, globals := range spec.Globals.Children {
		if err := rg.generateGlobals(name, globals, spec); err != nil {
			return nil, err
		}
	}

	return spec, nil

}