func()

in cli/azd/pkg/apphost/generate.go [655:738]


func (b *infraGenerator) LoadManifest(m *Manifest) error {
	// initCompilerOptions defines the way the infraGenerator loads and compiles the manifest.
	if err := b.initCompilerOptions(m); err != nil {
		return fmt.Errorf("initializing compiler options: %w", err)
	}

	for name, comp := range m.Resources {
		if err := b.extractOutputs(comp); err != nil {
			return fmt.Errorf("extracting outputs: %w", err)
		}

		b.resourceTypes[name] = comp.Type

		if comp.ConnectionString != nil {
			b.connectionStrings[name] = *comp.ConnectionString
		}

		switch comp.Type {
		case "project.v0":
			b.addProject(name, *comp.Path, comp.Env, comp.Bindings, comp.Args, nil, "")
		case "project.v1":
			var deploymentParams map[string]any
			var deploymentSource string
			if comp.Deployment != nil {
				deploymentParams = comp.Deployment.Params
				deploymentSource = filepath.Base(*comp.Deployment.Path)
			}
			b.addProject(name, *comp.Path, comp.Env, comp.Bindings, comp.Args, deploymentParams, deploymentSource)
		case "container.v0":
			err := b.addBuildContainer(name, comp)
			if err != nil {
				return err
			}
		case "dapr.v0":
			err := b.addDapr(name, comp.Dapr)
			if err != nil {
				return err
			}
		case "dapr.component.v0":
			err := b.addDaprComponent(name, comp.DaprComponent)
			if err != nil {
				return err
			}
		case "container.v1":
			err := b.addBuildContainer(name, comp)
			if err != nil {
				return err
			}
		case "dockerfile.v0":
			err := b.addBuildContainer(name, comp)
			if err != nil {
				return err
			}
		case "parameter.v0":
			if err := b.addInputParameter(name, comp); err != nil {
				return fmt.Errorf("adding bicep parameter from resource %s (%s): %w", name, comp.Type, err)
			}
		case "value.v0":
			if comp.Value != "" && !hasInputs(comp.Value) {
				// a value.v0 resource with value not referencing inputs doesn't need any further processing
				b.valueStrings[name] = comp.Value
				continue
			}
			if err := b.addInputParameter(name, comp); err != nil {
				return fmt.Errorf("adding bicep parameter from resource %s (%s): %w", name, comp.Type, err)
			}
		case "azure.bicep.v0", "azure.bicep.v1":
			if err := b.addBicep(name, comp); err != nil {
				return fmt.Errorf("adding bicep resource %s: %w", name, err)
			}
		default:
			ignore, err := strconv.ParseBool(os.Getenv("AZD_DEBUG_DOTNET_APPHOST_IGNORE_UNSUPPORTED_RESOURCES"))
			if err == nil && ignore {
				log.Printf(
					"ignoring resource of type %s since AZD_DEBUG_DOTNET_APPHOST_IGNORE_UNSUPPORTED_RESOURCES is set",
					comp.Type)
				continue
			}
			return fmt.Errorf("unsupported resource type: %s", comp.Type)
		}
	}

	return nil
}