X-Git-Url: https://ruderich.org/simon/gitweb/?p=safcm%2Fsafcm.git;a=blobdiff_plain;f=cmd%2Fsafcm%2Fconfig%2Ffiles.go;h=143a678ac15653254d28ac8b42b4c1046cfb81dd;hp=8f637701a60735c25ebb63969d075b8e1526edd9;hb=6a40d84afc959f404f243b1c00ab95dc9dd9c721;hpb=583a2695a3ddc9c98e0a03d9f1bad8df30afe887 diff --git a/cmd/safcm/config/files.go b/cmd/safcm/config/files.go index 8f63770..143a678 100644 --- a/cmd/safcm/config/files.go +++ b/cmd/safcm/config/files.go @@ -21,7 +21,9 @@ import ( "fmt" "io/fs" "os" + slashpath "path" "path/filepath" + "runtime" "ruderich.org/simon/safcm" ) @@ -38,6 +40,9 @@ confusion files must be manually chmodded 0644/0755 and directories 0755 or via "safcm fixperms". ` + // No permission checks on windows which doesn't track them. + windows := runtime.GOOS == "windows" + files := make(map[string]*safcm.File) err := filepath.WalkDir(basePath, func(path string, d fs.DirEntry, err error) error { @@ -58,6 +63,11 @@ via "safcm fixperms". // permissions they could assume that these permissions are // respected. This is not the case. if typ == 0 /* regular file */ { + if windows { + perm = 0644 + // 0755 must be set via permissions.yaml if + // windows is used + } if perm != 0644 && perm != 0755 { return fmt.Errorf( "%q: invalid permissions %#o%s", @@ -68,6 +78,9 @@ via "safcm fixperms". return err } } else if typ == fs.ModeDir { + if windows { + perm = 0755 + } if perm != 0755 { return fmt.Errorf( "%q: invalid permissions %#o%s", @@ -84,12 +97,13 @@ via "safcm fixperms". return fmt.Errorf("%q: file type not supported", path) } - // Convert to absolute path as used on the target host + // Convert to absolute and slash-separated path as used on the + // target host x, err := filepath.Rel(basePath, path) if err != nil { return err } - x = filepath.Join("/", x) + x = slashpath.Join("/", filepath.ToSlash(x)) files[x] = &safcm.File{ Path: x,