diff options
author | 2024-10-08 15:27:40 +0000 | |
---|---|---|
committer | 2024-10-08 15:27:40 +0000 | |
commit | 11a9db9b3abe7feebde86b9e7aed506d513aeddc (patch) | |
tree | ca3c2f1d7c3d47d0e70f7df9acda2f4df9b4d6ad /cmd | |
parent | 56d95dc46c50e0c9384497cdb56ca390bedea56a (diff) | |
parent | 639423daacc146457f10cf3d060bc2932dc903eb (diff) |
Merge "Enforce exclusive release config component directories" into main
Diffstat (limited to 'cmd')
-rw-r--r-- | cmd/release_config/release_config_lib/release_config.go | 17 |
1 files changed, 17 insertions, 0 deletions
diff --git a/cmd/release_config/release_config_lib/release_config.go b/cmd/release_config/release_config_lib/release_config.go index adf0e62da..ee71336c5 100644 --- a/cmd/release_config/release_config_lib/release_config.go +++ b/cmd/release_config/release_config_lib/release_config.go @@ -280,11 +280,28 @@ func (config *ReleaseConfig) GenerateReleaseConfig(configs *ReleaseConfigs) erro directories := []string{} valueDirectories := []string{} + // These path prefixes are exclusive for a release config. + // "A release config shall exist in at most one of these." + // If we find a benefit to generalizing this, we can do so at that time. + exclusiveDirPrefixes := []string{ + "build/release", + "vendor/google_shared/build/release", + } + var exclusiveDir string for idx, confDir := range configs.configDirs { if _, ok := myDirsMap[idx]; ok { directories = append(directories, confDir) } if _, ok := myValueDirsMap[idx]; ok { + for _, dir := range exclusiveDirPrefixes { + if strings.HasPrefix(confDir, dir) { + if exclusiveDir != "" && !strings.HasPrefix(exclusiveDir, dir) { + return fmt.Errorf("%s is declared in both %s and %s", + config.Name, exclusiveDir, confDir) + } + exclusiveDir = confDir + } + } valueDirectories = append(valueDirectories, confDir) } } |