func()

in pkg/repo/repo.go [460:489]


func (r *Repo) loadKEPFromYaml(repoPath, kepPath string) (*api.Proposal, error) {
	fullKEPPath := filepath.Join(repoPath, kepPath)
	b, err := ioutil.ReadFile(fullKEPPath)
	if err != nil {
		return nil, fmt.Errorf("unable to read KEP metadata for %s: %w", fullKEPPath, err)
	}

	var p api.Proposal
	err = yaml.UnmarshalStrict(b, &p)
	if err != nil {
		return nil, fmt.Errorf("unable to load KEP metadata: %s", err)
	}

	p.Name = filepath.Base(filepath.Dir(kepPath))
	prrApprovalPath := filepath.Join(repoPath, ProposalPathStub, PRRApprovalPathStub)

	// Read the PRR approval file and add any listed PRR approvers in there
	// to the PRR approvers list in the KEP. this is a hack while we transition
	// away from PRR approvers listed in kep.yaml
	handler := r.PRRHandler
	err = kepval.ValidatePRR(&p, handler, prrApprovalPath)
	if err != nil {
		logrus.Errorf(
			"%v",
			errors.Wrapf(err, "validating PRR for %s", p.Name),
		)
	}

	return &p, nil
}