mirror of https://github.com/docker/cli.git
replace dockerfile/dockerignore with patternmatcher/ignorefile
The BuildKit dockerignore package was migrated to the patternmatcher
repository / module. This patch updates our uses of the BuildKit package
with its new location.
A small local change was made to keep the format of the existing error message,
because the "ignorefile" package is slightly more agnostic in that respect
and doesn't include ".dockerignore" in the error message.
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
(cherry picked from commit 5bff12354d
)
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
This commit is contained in:
parent
bf632329d2
commit
710dd00e95
|
@ -1,11 +1,12 @@
|
||||||
package build
|
package build
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
|
||||||
"github.com/moby/buildkit/frontend/dockerfile/dockerignore"
|
|
||||||
"github.com/moby/patternmatcher"
|
"github.com/moby/patternmatcher"
|
||||||
|
"github.com/moby/patternmatcher/ignorefile"
|
||||||
)
|
)
|
||||||
|
|
||||||
// ReadDockerignore reads the .dockerignore file in the context directory and
|
// ReadDockerignore reads the .dockerignore file in the context directory and
|
||||||
|
@ -22,7 +23,11 @@ func ReadDockerignore(contextDir string) ([]string, error) {
|
||||||
}
|
}
|
||||||
defer f.Close()
|
defer f.Close()
|
||||||
|
|
||||||
return dockerignore.ReadAll(f)
|
patterns, err := ignorefile.ReadAll(f)
|
||||||
|
if err != nil {
|
||||||
|
return nil, fmt.Errorf("error reading .dockerignore: %w", err)
|
||||||
|
}
|
||||||
|
return patterns, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
// TrimBuildFilesFromExcludes removes the named Dockerfile and .dockerignore from
|
// TrimBuildFilesFromExcludes removes the named Dockerfile and .dockerignore from
|
||||||
|
|
|
@ -1,4 +1,4 @@
|
||||||
package dockerignore
|
package ignorefile
|
||||||
|
|
||||||
import (
|
import (
|
||||||
"bufio"
|
"bufio"
|
||||||
|
@ -6,23 +6,31 @@ import (
|
||||||
"io"
|
"io"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/pkg/errors"
|
|
||||||
)
|
)
|
||||||
|
|
||||||
// ReadAll reads a .dockerignore file and returns the list of file patterns
|
// ReadAll reads an ignore file from a reader and returns the list of file
|
||||||
// to ignore. Note this will trim whitespace from each line as well
|
// patterns to ignore, applying the following rules:
|
||||||
// as use GO's "clean" func to get the shortest/cleanest path for each.
|
//
|
||||||
|
// - An UTF8 BOM header (if present) is stripped.
|
||||||
|
// - Lines starting with "#" are considered comments and are skipped.
|
||||||
|
//
|
||||||
|
// For remaining lines:
|
||||||
|
//
|
||||||
|
// - Leading and trailing whitespace is removed from each ignore pattern.
|
||||||
|
// - It uses [filepath.Clean] to get the shortest/cleanest path for
|
||||||
|
// ignore patterns.
|
||||||
|
// - Leading forward-slashes ("/") are removed from ignore patterns,
|
||||||
|
// so "/some/path" and "some/path" are considered equivalent.
|
||||||
func ReadAll(reader io.Reader) ([]string, error) {
|
func ReadAll(reader io.Reader) ([]string, error) {
|
||||||
if reader == nil {
|
if reader == nil {
|
||||||
return nil, nil
|
return nil, nil
|
||||||
}
|
}
|
||||||
|
|
||||||
scanner := bufio.NewScanner(reader)
|
|
||||||
var excludes []string
|
var excludes []string
|
||||||
currentLine := 0
|
currentLine := 0
|
||||||
|
|
||||||
utf8bom := []byte{0xEF, 0xBB, 0xBF}
|
utf8bom := []byte{0xEF, 0xBB, 0xBF}
|
||||||
|
|
||||||
|
scanner := bufio.NewScanner(reader)
|
||||||
for scanner.Scan() {
|
for scanner.Scan() {
|
||||||
scannedBytes := scanner.Bytes()
|
scannedBytes := scanner.Bytes()
|
||||||
// We trim UTF8 BOM
|
// We trim UTF8 BOM
|
||||||
|
@ -59,7 +67,7 @@ func ReadAll(reader io.Reader) ([]string, error) {
|
||||||
excludes = append(excludes, pattern)
|
excludes = append(excludes, pattern)
|
||||||
}
|
}
|
||||||
if err := scanner.Err(); err != nil {
|
if err := scanner.Err(); err != nil {
|
||||||
return nil, errors.Wrap(err, "error reading .dockerignore")
|
return nil, err
|
||||||
}
|
}
|
||||||
return excludes, nil
|
return excludes, nil
|
||||||
}
|
}
|
|
@ -161,11 +161,11 @@ github.com/miekg/pkcs11
|
||||||
github.com/mitchellh/mapstructure
|
github.com/mitchellh/mapstructure
|
||||||
# github.com/moby/buildkit v0.11.6
|
# github.com/moby/buildkit v0.11.6
|
||||||
## explicit; go 1.18
|
## explicit; go 1.18
|
||||||
github.com/moby/buildkit/frontend/dockerfile/dockerignore
|
|
||||||
github.com/moby/buildkit/util/appcontext
|
github.com/moby/buildkit/util/appcontext
|
||||||
# github.com/moby/patternmatcher v0.6.0
|
# github.com/moby/patternmatcher v0.6.0
|
||||||
## explicit; go 1.19
|
## explicit; go 1.19
|
||||||
github.com/moby/patternmatcher
|
github.com/moby/patternmatcher
|
||||||
|
github.com/moby/patternmatcher/ignorefile
|
||||||
# github.com/moby/swarmkit/v2 v2.0.0-20230531205928-01bb7a41396b
|
# github.com/moby/swarmkit/v2 v2.0.0-20230531205928-01bb7a41396b
|
||||||
## explicit; go 1.18
|
## explicit; go 1.18
|
||||||
github.com/moby/swarmkit/v2/api
|
github.com/moby/swarmkit/v2/api
|
||||||
|
|
Loading…
Reference in New Issue