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
82 lines
1.6 KiB
Go
82 lines
1.6 KiB
Go
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
|
|
}
|