func renderReadme()

in scripts/generate-docs/doc_template.go [21:57]


func renderReadme(options generateOptions, packageName string) error {
	templatePath := filepath.Join(options.docTemplatesDir, fmt.Sprintf("%s/docs", packageName), readmeFilename)

	_, err := os.Stat(templatePath)
	if os.IsNotExist(err) {
		log.Printf(`Notice: the template file "%s" does not exist. The README.md file will not be rendered.`, templatePath)
		return nil
	} else if err != nil {
		return errors.Wrapf(err, "stat file failed (path: %s)", templatePath)
	}

	t := template.New(readmeFilename)
	t, err = t.Funcs(template.FuncMap{
		"event": func(dataStreamName string) (string, error) {
			return renderSampleEvent(options, packageName, dataStreamName)
		},
		"fields": func(dataStreamName string) (string, error) {
			return renderExportedFields(options, packageName, dataStreamName)
		},
	}).ParseFiles(templatePath)
	if err != nil {
		return errors.Wrapf(err, "parsing README template failed (path: %s)", templatePath)
	}

	outputPath := filepath.Join(options.packagesSourceDir, packageName, "docs", readmeFilename)
	f, err := os.OpenFile(outputPath, os.O_RDWR|os.O_CREATE|os.O_TRUNC, 0644)
	if err != nil {
		return errors.Wrapf(err, "opening README file for writing failed (path: %s)", outputPath)
	}
	defer f.Close()

	err = t.Execute(f, nil)
	if err != nil {
		return errors.Wrapf(err, "rendering README file failed (path: %s)", templatePath)
	}
	return nil
}