func()

in internal/corpus/generator.go [197:233]


func (gc GeneratorCorpus) GenerateWithTemplate(templatePath, fieldsDefinitionPath string, totEvents uint64, timeNow time.Time, randSeed int64) (string, error) {
	if err := gc.fs.MkdirAll(gc.location, corpusLocPerm); err != nil {
		return "", fmt.Errorf("cannot generate corpus location folder: %v", err)
	}

	payloadFilename := path.Join(gc.location, gc.bulkPayloadFilenameWithTemplate(templatePath))
	f, err := gc.fs.OpenFile(payloadFilename, os.O_WRONLY|os.O_CREATE|os.O_TRUNC, corpusPerm)
	if err != nil {
		return "", err
	}

	template, err := os.ReadFile(templatePath)
	if err != nil {
		return "", err
	}

	if len(template) == 0 {
		return "", errors.New("you must provide a non empty template content")
	}

	ctx := context.Background()
	flds, err := fields.LoadFieldsWithTemplate(ctx, fieldsDefinitionPath)
	if err != nil {
		return "", err
	}

	err = gc.eventsPayloadFromFields(template, flds, totEvents, timeNow, randSeed, nil, f)
	if err != nil {
		return "", err
	}

	if err := f.Close(); err != nil {
		return "", err
	}

	return payloadFilename, err
}