return
}
+func (r *Recipe) ForEachTree(f func(Tree) error) (err error) {
+ for t := range r.Recipes {
+ err = f(t)
+ if err != nil {
+ return
+ }
+ }
+ return
+}
+
func (r *Recipe) MakePatches(prefix string, sync bool) (err error) {
count := 0
branch, baseline := r.branchName(prefix)
return
}
- makePatches := func(xr *XenRepo, tree Tree) (err error) {
+ makePatches := func(tree Tree) (err error) {
+ xr := G.repos.XenRepos[tree]
+
if !xr.VerifyRef(branch) {
return
}
+
if !xr.VerifyRef(baseline) {
fmt.Printf("WARNING: Repo %s has branch %s but no branch %s, skipping\n",
tree, branch, baseline)
return
}
- if err = ForEachXenRepo(makePatches); err != nil {
+ if err = r.ForEachTree(makePatches); err != nil {
return
}
return
}
- copyPatches := func(xr *XenRepo, tree Tree) (err error) {
+ copyPatches := func(tree Tree) (err error) {
patchpath := FPPath + "/" + tree.String()
fi, err := os.Stat(patchpath)
return
}
- if err = ForEachXenRepo(copyPatches); err != nil {
+ if err = r.ForEachTree(copyPatches); err != nil {
return
}
func (r *Recipe) IsApplied(prefix string) (err error) {
branch, baseline := r.branchName(prefix)
- check := func(xr *XenRepo, tree Tree) (err error) {
+ check := func(tree Tree) (err error) {
tr, prs := r.Recipes[tree]
if !prs || !tr.HasPatches() {
return
}
+ xr := G.repos.XenRepos[tree]
+
if !xr.VerifyRef(branch) {
return ErrorMissingBranch(branch)
}
if !xr.VerifyRef(baseline) {
return ErrorMissingBranch(baseline)
}
+
+ // FIXME: Actually check to see if something is applied
+
return
}
- if err = ForEachXenRepo(check); err != nil {
+ if err = r.ForEachTree(check); err != nil {
return
}
}
func (r *Recipe) Apply(prefix string) (err error) {
- apply := func(xr *XenRepo, tree Tree) (err error) {
+ apply := func(tree Tree) (err error) {
tr, prs := r.Recipes[tree]
- if !prs || !tr.HasPatches() {
+ if !prs {
+ err = fmt.Errorf("Internal data error: no recipe for tree %s\n", tree)
return
}
+ xr := G.repos.XenRepos[tree]
+
err = r.apply(xr, tr, prefix)
return
}
- if err = ForEachXenRepo(apply); err != nil {
- return
- }
+ err = r.ForEachTree(apply)
return
}