fix: improve check for user namespace subdirectories
This commit is contained in:
parent
812dd8faaf
commit
1dcc645b14
@ -5,9 +5,14 @@ import (
|
|||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
"path"
|
"path"
|
||||||
|
"slices"
|
||||||
|
"strings"
|
||||||
)
|
)
|
||||||
|
|
||||||
var supportedResourceTypes = []string{"modules", "templates"}
|
var (
|
||||||
|
supportedResourceTypes = []string{"modules", "templates"}
|
||||||
|
supportedUserNameSpaceDirectories = append(supportedResourceTypes[:], ".icons", ".images")
|
||||||
|
)
|
||||||
|
|
||||||
func validateCoderResourceSubdirectory(dirPath string) []error {
|
func validateCoderResourceSubdirectory(dirPath string) []error {
|
||||||
errs := []error{}
|
errs := []error{}
|
||||||
@ -84,11 +89,32 @@ func validateRegistryDirectory() []error {
|
|||||||
allErrs = append(allErrs, err)
|
allErrs = append(allErrs, err)
|
||||||
}
|
}
|
||||||
|
|
||||||
for _, rType := range supportedResourceTypes {
|
files, err := os.ReadDir(dirPath)
|
||||||
resourcePath := path.Join(dirPath, rType)
|
if err != nil {
|
||||||
errs := validateCoderResourceSubdirectory(resourcePath)
|
allErrs = append(allErrs, err)
|
||||||
if len(errs) != 0 {
|
continue
|
||||||
allErrs = append(allErrs, errs...)
|
}
|
||||||
|
|
||||||
|
for _, f := range files {
|
||||||
|
// Todo: Decide if there's anything more formal that we want to
|
||||||
|
// ensure about non-directories scoped to user namespaces
|
||||||
|
if !f.IsDir() {
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
segment := f.Name()
|
||||||
|
filePath := path.Join(dirPath, segment)
|
||||||
|
|
||||||
|
if !slices.Contains(supportedUserNameSpaceDirectories, segment) {
|
||||||
|
allErrs = append(allErrs, fmt.Errorf("%q: only these sub-directories are allowed at top of user namespace: [%s]", filePath, strings.Join(supportedUserNameSpaceDirectories, ", ")))
|
||||||
|
continue
|
||||||
|
}
|
||||||
|
|
||||||
|
if slices.Contains(supportedResourceTypes, segment) {
|
||||||
|
errs := validateCoderResourceSubdirectory(filePath)
|
||||||
|
if len(errs) != 0 {
|
||||||
|
allErrs = append(allErrs, errs...)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user