Files
kubescape/core/pkg/resourcehandler/urlloader.go
2022-08-22 18:22:28 +03:00

49 lines
1.1 KiB
Go

package resourcehandler
import (
giturl "github.com/armosec/go-git-url"
logger "github.com/kubescape/go-logger"
"github.com/kubescape/go-logger/helpers"
"github.com/kubescape/k8s-interface/workloadinterface"
"github.com/kubescape/kubescape/v2/core/cautils"
)
func loadResourcesFromUrl(inputPatterns []string) (map[string][]workloadinterface.IMetadata, error) {
if len(inputPatterns) == 0 {
return nil, nil
}
g, err := giturl.NewGitAPI(inputPatterns[0])
if err != nil {
return nil, nil
}
files, errs := g.DownloadFilesWithExtension(append(cautils.YAML_PREFIX, cautils.JSON_PREFIX...))
if len(errs) > 0 {
for i, j := range errs {
logger.L().Error(i, helpers.Error(j))
}
}
if len(files) == 0 {
return nil, nil
}
// convert files to IMetadata
workloads := make(map[string][]workloadinterface.IMetadata, 0)
for i, j := range files {
w, e := cautils.ReadFile(j, cautils.GetFileFormat(i))
if e != nil || len(w) == 0 {
continue
}
if _, ok := workloads[i]; !ok {
workloads[i] = make([]workloadinterface.IMetadata, 0)
}
wSlice := workloads[i]
wSlice = append(wSlice, w...)
workloads[i] = wSlice
}
return workloads, nil
}