func Generate()

in hack/operatorhub/internal/operatorhub/operatorhub.go [71:131]


func Generate(config GenerateConfig) error {
	var imageDigest string
	if config.ConfigFile.HasDigestPinning() {
		if len(config.RedhatAPIKey) == 0 {
			return errors.New("Red Hat API key is required to get image digest")
		}
		if len(config.RedhatProjectID) == 0 {
			return errors.New("Red Hat project ID is required to get image digest")
		}
		var err error
		imageDigest, err = getImageDigest(config.RedhatAPIKey, config.RedhatProjectID, config.ConfigFile.NewVersion)
		if err != nil {
			log.Println("ⅹ")
			return err
		}
	}

	log.Printf("Gathering and extracting data from yaml manifest path %v ", config.ManifestPaths)
	manifestStream, close, err := getInstallManifestStream(config.ConfigFile, config.ManifestPaths)
	if err != nil {
		log.Println("ⅹ")
		return err
	}
	defer close()
	extracts, err := extractYAMLParts(manifestStream)
	if err != nil {
		log.Println("ⅹ")
		return err
	}
	if len(extracts.crds) == 0 {
		log.Println("ⅹ")
		return errors.New("no crds found")
	}
	if len(extracts.operatorRBAC) == 0 {
		log.Println("ⅹ")
		return errors.New("no operator RBAC found")
	}
	if len(extracts.operatorWebhooks) == 0 {
		log.Println("ⅹ")
		return errors.New("no operator webhooks found")
	}
	log.Println("✓")

	log.Printf("Rendering final operatorhub data ")
	for i := range config.ConfigFile.Packages {
		params, err := buildRenderParams(config.ConfigFile, i, extracts, imageDigest)
		if err != nil {
			log.Println("ⅹ")
			return err
		}

		outDir := config.ConfigFile.Packages[i].OutputPath
		if err := render(params, config.TemplatesPath, outDir); err != nil {
			log.Println("ⅹ")
			return err
		}
	}

	log.Println("✓")
	return nil
}