packages/tools/bump-validator/main.go
Mauro Morales 15ce83c3f4
Make sure that if a package file has been changed, that a related definition/collection file has also been changed (#668)
* list changed files

Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>

* simplify

Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>

* simplify

Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>

* test file

Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>

* Add bump validator

Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>

* wrong dir

Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>

* go version 1.23

Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>

* force go version

Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>

* test

Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>

* revert test changes

Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>

* Do the check also on amd

Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>

* use a new job

Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>

* add checkout step

Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>

* Use hasPrefix

Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>

---------

Signed-off-by: Mauro Morales <mauro.morales@spectrocloud.com>
2024-02-09 09:24:28 +01:00

51 lines
1.2 KiB
Go

package main
import (
"fmt"
"os"
"path/filepath"
"strings"
)
// isDefinitionFile checks if the basename of the file is definition.yaml or collection.yaml
func isDefinitionFile(file string) bool {
basename := filepath.Base(file)
return basename == "definition.yaml" || basename == "collection.yaml"
}
// reduceRelated keeps only the definition files that are siblings or in a parten directory of the given file
func reduceRelated(file string, files []string) []string {
var relatedFiles []string
dir := filepath.Dir(file)
for _, f := range files {
otherDir := filepath.Dir(f)
if isDefinitionFile(f) && strings.HasPrefix(dir, otherDir) {
relatedFiles = append(relatedFiles, f)
}
}
return relatedFiles
}
func main() {
var missingVersionBump bool
files := os.Args[1:]
for _, file := range files {
// fmt.Println("Processing file ", file)
if isDefinitionFile(file) {
// fmt.Println("Skipping definition file ", file)
continue
}
relatedFiles := reduceRelated(file, files)
if len(relatedFiles) == 0 {
missingVersionBump = true
fmt.Println("Error: Version bump missing for file ", file)
}
}
if missingVersionBump {
os.Exit(1)
}
}