type XSAMeta struct {
XSA int
SupportedVersions []XenVersion
- Recipes []Recipe
+ Recipes map[XenVersion]*Recipe
// Not exported
dirty bool
}
func (m *XSAMeta) GetRecipe(v XenVersion) *Recipe {
- for i := range m.Recipes {
- if v == m.Recipes[i].XenVersionFull.XenVersion() {
- return &m.Recipes[i]
- }
- }
- return nil
+ return m.Recipes[v]
}
func (m *XSAMeta) NewRecipe(fv XenVersionFull) *Recipe {
var r Recipe
- r.Recipes = make(map[Tree]*TreeRecipe)
- r.XenVersionFull = fv
r.xsa = m.XSA
+ r.XenVersionFull = fv
+ r.Recipes = make(map[Tree]*TreeRecipe)
- m.Recipes = append(m.Recipes, r)
+ m.Recipes[fv.XenVersion()] = &r
- return &m.Recipes[len(m.Recipes)-1]
+ return &r
}
func getXSAPath(xsanum int) string {
func backport(xsa *XSAMeta) (ret int) {
for i := range xsa.Recipes {
prefix := "xsa"
- r := &xsa.Recipes[i]
+ r := xsa.Recipes[i]
if err := r.IsApplied(prefix); err != nil {
if _, isMissingBranch := err.(ErrorMissingBranch); !isMissingBranch {