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
}