1. New build system
All checks were successful
build-dsl-smoke / Build judge (push) Successful in 12s
build-dsl-smoke / debug / clang / linux (push) Successful in 6s
build-dsl-smoke / debug / gcc / linux (push) Successful in 8s
build-dsl-smoke / release / clang / linux (push) Successful in 8s
build-dsl-smoke / release / gcc / linux (push) Successful in 6s
build-dsl-smoke / sanitized / clang / linux (push) Successful in 8s
build-dsl-smoke / sanitized / gcc / linux (push) Successful in 7s
build-dsl-smoke / debug / clang / windows (push) Successful in 13s
build-dsl-smoke / debug-valgrind / gcc / linux (push) Successful in 14s
build-dsl-smoke / release / clang / windows (push) Successful in 16s
build-dsl-smoke / debug / msvc / windows (push) Successful in 18s
build-dsl-smoke / release / msvc / windows (push) Successful in 17s
build-dsl-smoke / SUMMARY (push) Successful in 4s
Release / Build & publish (push) Successful in 48s
All checks were successful
build-dsl-smoke / Build judge (push) Successful in 12s
build-dsl-smoke / debug / clang / linux (push) Successful in 6s
build-dsl-smoke / debug / gcc / linux (push) Successful in 8s
build-dsl-smoke / release / clang / linux (push) Successful in 8s
build-dsl-smoke / release / gcc / linux (push) Successful in 6s
build-dsl-smoke / sanitized / clang / linux (push) Successful in 8s
build-dsl-smoke / sanitized / gcc / linux (push) Successful in 7s
build-dsl-smoke / debug / clang / windows (push) Successful in 13s
build-dsl-smoke / debug-valgrind / gcc / linux (push) Successful in 14s
build-dsl-smoke / release / clang / windows (push) Successful in 16s
build-dsl-smoke / debug / msvc / windows (push) Successful in 18s
build-dsl-smoke / release / msvc / windows (push) Successful in 17s
build-dsl-smoke / SUMMARY (push) Successful in 4s
Release / Build & publish (push) Successful in 48s
Reviewed-on: #1
This commit was merged in pull request #1.
This commit is contained in:
81
dsl/merge.go
Normal file
81
dsl/merge.go
Normal file
@@ -0,0 +1,81 @@
|
||||
package dsl
|
||||
|
||||
import "fmt"
|
||||
|
||||
func mergeFiles(dst, src *File) error {
|
||||
if src.Build != "" {
|
||||
dst.Build = src.Build
|
||||
}
|
||||
if src.BuildLinux != "" {
|
||||
dst.BuildLinux = src.BuildLinux
|
||||
}
|
||||
if src.BuildWindows != "" {
|
||||
dst.BuildWindows = src.BuildWindows
|
||||
}
|
||||
if src.BuildDarwin != "" {
|
||||
dst.BuildDarwin = src.BuildDarwin
|
||||
}
|
||||
|
||||
if src.BuildDefaults != nil {
|
||||
if dst.BuildDefaults == nil {
|
||||
dst.BuildDefaults = &BuildConfig{}
|
||||
}
|
||||
dst.BuildDefaults.MergeFrom(src.BuildDefaults)
|
||||
}
|
||||
|
||||
seenTC := map[string]bool{}
|
||||
for _, t := range dst.Toolchains {
|
||||
seenTC[t.Name] = true
|
||||
}
|
||||
for _, t := range src.Toolchains {
|
||||
if seenTC[t.Name] {
|
||||
return fmt.Errorf("duplicate toolchain %q", t.Name)
|
||||
}
|
||||
seenTC[t.Name] = true
|
||||
dst.Toolchains = append(dst.Toolchains, t)
|
||||
}
|
||||
|
||||
seenB := map[string]bool{}
|
||||
for _, b := range dst.Builds {
|
||||
seenB[b.Name] = true
|
||||
}
|
||||
for _, b := range src.Builds {
|
||||
if seenB[b.Name] {
|
||||
return fmt.Errorf("duplicate build %q", b.Name)
|
||||
}
|
||||
seenB[b.Name] = true
|
||||
dst.Builds = append(dst.Builds, b)
|
||||
}
|
||||
|
||||
seenG := map[string]bool{}
|
||||
for _, g := range dst.Groups {
|
||||
seenG[g.Name] = true
|
||||
}
|
||||
for _, g := range src.Groups {
|
||||
if seenG[g.Name] {
|
||||
return fmt.Errorf("duplicate group %q", g.Name)
|
||||
}
|
||||
seenG[g.Name] = true
|
||||
dst.Groups = append(dst.Groups, g)
|
||||
}
|
||||
|
||||
if src.Timeout != 0 {
|
||||
dst.Timeout = src.Timeout
|
||||
}
|
||||
if src.MemoryLimit != 0 {
|
||||
dst.MemoryLimit = src.MemoryLimit
|
||||
}
|
||||
if src.Binary != "" {
|
||||
dst.Binary = src.Binary
|
||||
}
|
||||
if src.Sources != "" {
|
||||
dst.Sources = src.Sources
|
||||
}
|
||||
if src.NormalizeCRLF {
|
||||
dst.NormalizeCRLF = true
|
||||
}
|
||||
if src.TrimTrailingWS {
|
||||
dst.TrimTrailingWS = true
|
||||
}
|
||||
return nil
|
||||
}
|
||||
Reference in New Issue
Block a user