mirror of
https://github.com/anchore/syft.git
synced 2026-06-10 06:18:24 +02:00
* chore(deps): bump the go-minor-patch group across 2 directories with 14 updates Bumps the go-minor-patch group with 9 updates in the / directory: | Package | From | To | | --- | --- | --- | | [github.com/CycloneDX/cyclonedx-go](https://github.com/CycloneDX/cyclonedx-go) | `0.10.0` | `0.11.0` | | [github.com/Masterminds/semver/v3](https://github.com/Masterminds/semver) | `3.4.0` | `3.5.0` | | [github.com/diskfs/go-diskfs](https://github.com/diskfs/go-diskfs) | `1.7.0` | `1.9.3` | | [github.com/github/go-spdx/v2](https://github.com/github/go-spdx) | `2.4.0` | `2.7.0` | | [github.com/google/go-containerregistry](https://github.com/google/go-containerregistry) | `0.21.5` | `0.21.6` | | [github.com/gookit/color](https://github.com/gookit/color) | `1.6.0` | `1.6.1` | | [github.com/invopop/jsonschema](https://github.com/invopop/jsonschema) | `0.13.0` | `0.14.0` | | [github.com/jedib0t/go-pretty/v6](https://github.com/jedib0t/go-pretty) | `6.7.8` | `6.7.10` | | [modernc.org/sqlite](https://gitlab.com/cznic/sqlite) | `1.46.2` | `1.50.1` | Bumps the go-minor-patch group with 1 update in the /.make directory: [github.com/anchore/go-make](https://github.com/anchore/go-make). Updates `github.com/CycloneDX/cyclonedx-go` from 0.10.0 to 0.11.0 - [Release notes](https://github.com/CycloneDX/cyclonedx-go/releases) - [Commits](https://github.com/CycloneDX/cyclonedx-go/compare/v0.10.0...v0.11.0) Updates `github.com/Masterminds/semver/v3` from 3.4.0 to 3.5.0 - [Release notes](https://github.com/Masterminds/semver/releases) - [Changelog](https://github.com/Masterminds/semver/blob/master/CHANGELOG.md) - [Commits](https://github.com/Masterminds/semver/compare/v3.4.0...v3.5.0) Updates `github.com/diskfs/go-diskfs` from 1.7.0 to 1.9.3 - [Commits](https://github.com/diskfs/go-diskfs/compare/v1.7.0...v1.9.3) Updates `github.com/github/go-spdx/v2` from 2.4.0 to 2.7.0 - [Release notes](https://github.com/github/go-spdx/releases) - [Commits](https://github.com/github/go-spdx/compare/v2.4.0...v2.7.0) Updates `github.com/google/go-containerregistry` from 0.21.5 to 0.21.6 - [Release notes](https://github.com/google/go-containerregistry/releases) - [Commits](https://github.com/google/go-containerregistry/compare/v0.21.5...v0.21.6) Updates `github.com/gookit/color` from 1.6.0 to 1.6.1 - [Release notes](https://github.com/gookit/color/releases) - [Commits](https://github.com/gookit/color/compare/v1.6.0...v1.6.1) Updates `github.com/invopop/jsonschema` from 0.13.0 to 0.14.0 - [Release notes](https://github.com/invopop/jsonschema/releases) - [Commits](https://github.com/invopop/jsonschema/compare/v0.13.0...v0.14.0) Updates `github.com/jedib0t/go-pretty/v6` from 6.7.8 to 6.7.10 - [Release notes](https://github.com/jedib0t/go-pretty/releases) - [Commits](https://github.com/jedib0t/go-pretty/compare/v6.7.8...v6.7.10) Updates `github.com/klauspost/compress` from 1.18.5 to 1.18.6 - [Release notes](https://github.com/klauspost/compress/releases) - [Commits](https://github.com/klauspost/compress/compare/v1.18.5...v1.18.6) Updates `golang.org/x/mod` from 0.35.0 to 0.36.0 - [Commits](https://github.com/golang/mod/compare/v0.35.0...v0.36.0) Updates `golang.org/x/net` from 0.53.0 to 0.54.0 - [Commits](https://github.com/golang/net/compare/v0.53.0...v0.54.0) Updates `golang.org/x/tools` from 0.44.0 to 0.45.0 - [Release notes](https://github.com/golang/tools/releases) - [Commits](https://github.com/golang/tools/compare/v0.44.0...v0.45.0) Updates `modernc.org/sqlite` from 1.46.2 to 1.50.1 - [Changelog](https://gitlab.com/cznic/sqlite/blob/master/CHANGELOG.md) - [Commits](https://gitlab.com/cznic/sqlite/compare/v1.46.2...v1.50.1) Updates `github.com/anchore/go-make` from 0.4.0 to 0.5.0 - [Release notes](https://github.com/anchore/go-make/releases) - [Commits](https://github.com/anchore/go-make/compare/v0.4.0...v0.5.0) --- updated-dependencies: - dependency-name: github.com/CycloneDX/cyclonedx-go dependency-version: 0.11.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: go-minor-patch - dependency-name: github.com/Masterminds/semver/v3 dependency-version: 3.5.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: go-minor-patch - dependency-name: github.com/diskfs/go-diskfs dependency-version: 1.9.3 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: go-minor-patch - dependency-name: github.com/github/go-spdx/v2 dependency-version: 2.7.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: go-minor-patch - dependency-name: github.com/google/go-containerregistry dependency-version: 0.21.6 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: go-minor-patch - dependency-name: github.com/gookit/color dependency-version: 1.6.1 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: go-minor-patch - dependency-name: github.com/invopop/jsonschema dependency-version: 0.14.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: go-minor-patch - dependency-name: github.com/jedib0t/go-pretty/v6 dependency-version: 6.7.10 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: go-minor-patch - dependency-name: github.com/klauspost/compress dependency-version: 1.18.6 dependency-type: direct:production update-type: version-update:semver-patch dependency-group: go-minor-patch - dependency-name: golang.org/x/mod dependency-version: 0.36.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: go-minor-patch - dependency-name: golang.org/x/net dependency-version: 0.54.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: go-minor-patch - dependency-name: golang.org/x/tools dependency-version: 0.45.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: go-minor-patch - dependency-name: modernc.org/sqlite dependency-version: 1.50.1 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: go-minor-patch - dependency-name: github.com/anchore/go-make dependency-version: 0.5.0 dependency-type: direct:production update-type: version-update:semver-minor dependency-group: go-minor-patch ... Signed-off-by: dependabot[bot] <support@github.com> Signed-off-by: Christopher Phillips <32073428+spiffcs@users.noreply.github.com> * fix: update signatures to return fs.FileInfo after breaking changes Signed-off-by: Christopher Phillips <32073428+spiffcs@users.noreply.github.com> * fix: lint-fix Signed-off-by: Christopher Phillips <32073428+spiffcs@users.noreply.github.com> --------- Signed-off-by: dependabot[bot] <support@github.com> Signed-off-by: Christopher Phillips <32073428+spiffcs@users.noreply.github.com> Co-authored-by: Christopher Phillips <32073428+spiffcs@users.noreply.github.com>
120 lines
2.7 KiB
Go
120 lines
2.7 KiB
Go
package file
|
|
|
|
import (
|
|
"errors"
|
|
"io/fs"
|
|
"os"
|
|
"path/filepath"
|
|
"strings"
|
|
|
|
"github.com/diskfs/go-diskfs/filesystem"
|
|
)
|
|
|
|
type WalkDiskDirFunc func(fsys filesystem.FileSystem, path string, d os.FileInfo, err error) error
|
|
|
|
// WalkDiskDir walks the file tree within the go-diskfs filesystem at root, calling fn for each file or directory in the tree, including root.
|
|
// This is meant to mimic the behavior of fs.WalkDir in the standard library.
|
|
func WalkDiskDir(fsys filesystem.FileSystem, root string, fn WalkDiskDirFunc) error {
|
|
infos, err := readDiskDir(fsys, root)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
|
|
if len(infos) == 0 {
|
|
return nil
|
|
}
|
|
|
|
for _, info := range infos {
|
|
p := filepath.Join(root, info.Name())
|
|
err = walkDiskDir(fsys, p, info, fn)
|
|
if err != nil {
|
|
if errors.Is(err, fs.SkipDir) {
|
|
continue
|
|
}
|
|
if errors.Is(err, fs.SkipAll) {
|
|
return nil
|
|
}
|
|
return err
|
|
}
|
|
}
|
|
|
|
return err
|
|
}
|
|
|
|
func walkDiskDir(fsys filesystem.FileSystem, name string, d os.FileInfo, walkDirFn WalkDiskDirFunc) error {
|
|
if err := walkDirFn(fsys, name, d, nil); err != nil {
|
|
if errors.Is(err, fs.SkipDir) && (d == nil || d.IsDir()) {
|
|
return nil
|
|
}
|
|
return err
|
|
}
|
|
|
|
isDir := d != nil && d.IsDir()
|
|
if d == nil {
|
|
_, err := readDiskDir(fsys, name)
|
|
if err != nil {
|
|
return nil
|
|
}
|
|
isDir = true
|
|
}
|
|
|
|
if !isDir {
|
|
return nil
|
|
}
|
|
|
|
dirs, err := readDiskDir(fsys, name)
|
|
if err != nil {
|
|
err = walkDirFn(fsys, name, d, err)
|
|
if err != nil {
|
|
if errors.Is(err, fs.SkipDir) {
|
|
return nil
|
|
}
|
|
return err
|
|
}
|
|
}
|
|
|
|
for _, d1 := range dirs {
|
|
name1 := filepath.Join(name, d1.Name())
|
|
if err := walkDiskDir(fsys, name1, d1, walkDirFn); err != nil {
|
|
if errors.Is(err, fs.SkipDir) {
|
|
break
|
|
}
|
|
if errors.Is(err, fs.SkipAll) {
|
|
return err
|
|
}
|
|
return err
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
// readDiskDir reads the directory entries at the given path from a go-diskfs filesystem.
|
|
// go-diskfs returns fs.DirEntry values; these are resolved to os.FileInfo so callers have
|
|
// access to the full file metadata (mode, size, modification time).
|
|
func readDiskDir(fsys filesystem.FileSystem, p string) ([]os.FileInfo, error) {
|
|
entries, err := fsys.ReadDir(ToFSPath(p))
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
|
|
infos := make([]os.FileInfo, 0, len(entries))
|
|
for _, entry := range entries {
|
|
info, err := entry.Info()
|
|
if err != nil {
|
|
return nil, err
|
|
}
|
|
infos = append(infos, info)
|
|
}
|
|
return infos, nil
|
|
}
|
|
|
|
// ToFSPath converts an absolute ("/"-rooted) path into an io/fs-valid path as required by
|
|
// go-diskfs, where the root is "." and other paths carry no leading slash (see io/fs.ValidPath).
|
|
func ToFSPath(p string) string {
|
|
p = strings.TrimPrefix(p, "/")
|
|
if p == "" {
|
|
return "."
|
|
}
|
|
return p
|
|
}
|