Browse Source

Error if > 1 entry in build file

Signed-off-by: Graham MacDonald <grahamamacdonald@gmail.com>
Graham MacDonald 5 years ago
parent
commit
d5bf854465
1 changed files with 18 additions and 8 deletions
  1. 18 8
      util/src/harvey/cmd/build/build.go

+ 18 - 8
util/src/harvey/cmd/build/build.go

@@ -211,11 +211,10 @@ func include(f string, targ string, b *build) {
 		return
 	}
 	b.jsons[f] = true
+
 	log.Printf("Including %s", f)
-	d, err := ioutil.ReadFile(f)
-	fail(err)
-	var builds buildfile
-	fail(json.Unmarshal(d, &builds))
+	builds := unmarshalBuild(f)
+
 
 	for _, build := range builds {
 		t := target(&build)
@@ -298,13 +297,24 @@ func contains(a []string, s string) bool {
 	return false
 }
 
-func process(f string, r []*regexp.Regexp) []build {
-	log.Printf("Processing %s", f)
-	var builds buildfile
-	var results []build
+func unmarshalBuild(f string) buildfile {
 	d, err := ioutil.ReadFile(f)
 	fail(err)
+
+	var builds buildfile
 	fail(json.Unmarshal(d, &builds))
+	if len(builds) > 1 {
+		log.Fatalf("Error: build file (%v) has > 1 entry", f)
+	}
+	return builds
+}
+
+func process(f string, r []*regexp.Regexp) []build {
+	log.Printf("Processing %s", f)
+	var results []build
+
+	builds := unmarshalBuild(f)
+
 	for n, build := range builds {
 		build.name = n
 		build.jsons = make(map[string]bool)