소스 검색

Move Matches() file path matching function into pkg/fileutils

This is the second of two steps to break the archive package's
dependence on utils so that archive may be moved into pkg. `Matches()`
is also a good candidate pkg in that it is small, concise, and not
specific to docker internals

Signed-off-by: Rafe Colton <rafael.colton@gmail.com>
Rafe Colton 10 년 전
부모
커밋
73f4bfed81
2개의 변경된 파일28개의 추가작업 그리고 21개의 파일을 삭제
  1. 26 0
      pkg/fileutils/fileutils.go
  2. 2 21
      utils/utils.go

+ 26 - 0
pkg/fileutils/fileutils.go

@@ -0,0 +1,26 @@
+package fileutils
+
+import (
+	"github.com/docker/docker/pkg/log"
+	"path/filepath"
+)
+
+// Matches returns true if relFilePath matches any of the patterns
+func Matches(relFilePath string, patterns []string) (bool, error) {
+	for _, exclude := range patterns {
+		matched, err := filepath.Match(exclude, relFilePath)
+		if err != nil {
+			log.Errorf("Error matching: %s (pattern: %s)", relFilePath, exclude)
+			return false, err
+		}
+		if matched {
+			if filepath.Clean(relFilePath) == "." {
+				log.Errorf("Can't exclude whole path, excluding pattern: %s", exclude)
+				continue
+			}
+			log.Debugf("Skipping excluded path: %s", relFilePath)
+			return true, nil
+		}
+	}
+	return false, nil
+}

+ 2 - 21
utils/utils.go

@@ -21,6 +21,7 @@ import (
 	"syscall"
 
 	"github.com/docker/docker/dockerversion"
+	"github.com/docker/docker/pkg/fileutils"
 	"github.com/docker/docker/pkg/ioutils"
 	"github.com/docker/docker/pkg/log"
 )
@@ -493,7 +494,7 @@ func ValidateContextDirectory(srcPath string, excludes []string) error {
 		// skip this directory/file if it's not in the path, it won't get added to the context
 		if relFilePath, err := filepath.Rel(srcPath, filePath); err != nil {
 			return err
-		} else if skip, err := Matches(relFilePath, excludes); err != nil {
+		} else if skip, err := fileutils.Matches(relFilePath, excludes); err != nil {
 			return err
 		} else if skip {
 			if f.IsDir() {
@@ -537,23 +538,3 @@ func StringsContainsNoCase(slice []string, s string) bool {
 	}
 	return false
 }
-
-// Matches returns true if relFilePath matches any of the patterns
-func Matches(relFilePath string, patterns []string) (bool, error) {
-	for _, exclude := range patterns {
-		matched, err := filepath.Match(exclude, relFilePath)
-		if err != nil {
-			log.Errorf("Error matching: %s (pattern: %s)", relFilePath, exclude)
-			return false, err
-		}
-		if matched {
-			if filepath.Clean(relFilePath) == "." {
-				log.Errorf("Can't exclude whole path, excluding pattern: %s", exclude)
-				continue
-			}
-			log.Debugf("Skipping excluded path: %s", relFilePath)
-			return true, nil
-		}
-	}
-	return false, nil
-}