Merge pull request #177 from vbatts/lint

linting and adding check for staticcheck
This commit is contained in:
Vincent Batts 2022-04-08 23:15:48 -04:00 committed by GitHub
commit b9356e6843
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
10 changed files with 23 additions and 45 deletions

2
.gitignore vendored
View File

@ -3,4 +3,6 @@
.lint
.test
.vet
.staticcheck
.gocyclo
gomtree

View File

@ -14,7 +14,7 @@ default: build validation
validation: .test .lint .vet .cli.test
.PHONY: validation.tags
validation.tags: .test.tags .vet.tags .cli.test
validation.tags: .test.tags .vet.tags .cli.test .staticcheck
.PHONY: gocyclo
gocyclo: .gocyclo
@ -24,6 +24,14 @@ CLEAN_FILES += .gocyclo
.gocyclo:
gocyclo -avg -over 15 -ignore 'vendor/*' . && touch $@
.PHONY: staticcheck
staticcheck: .staticcheck
CLEAN_FILES += .staticcheck
.staticcheck:
staticcheck . && touch $@
.PHONY: test
test: .test
@ -79,6 +87,7 @@ $(BUILD): $(SOURCE_FILES)
install.tools:
@go install -u github.com/fatih/color@latest ; \
go install -u github.com/fzipp/gocyclo/cmd/gocyclo@latest ; \
go install -u honnef.co/go/tools/cmd/staticcheck@latest ; \
if [ "$(findstring $(GO_VER),$(shell go version))" != "" ] ; then \
go get -u golang.org/x/lint/golint ;\
fi

View File

@ -12,6 +12,8 @@ import (
"os"
"github.com/vbatts/go-mtree/pkg/govis"
//lint:ignore SA1019 yes ripemd160 is deprecated, but this is for mtree compatibility
"golang.org/x/crypto/ripemd160"
)

View File

@ -1,3 +1,4 @@
//go:build linux
// +build linux
package mtree
@ -69,11 +70,11 @@ var (
}
xattrKeywordFunc = func(path string, info os.FileInfo, r io.Reader) ([]KeyVal, error) {
if hdr, ok := info.Sys().(*tar.Header); ok {
if len(hdr.Xattrs) == 0 {
if len(hdr.PAXRecords) == 0 {
return nil, nil
}
klist := []KeyVal{}
for k, v := range hdr.Xattrs {
for k, v := range hdr.PAXRecords {
encKey, err := govis.Vis(k, DefaultVisFlags)
if err != nil {
return nil, nil

View File

@ -174,9 +174,7 @@ func keyValDifference(this, that []KeyVal) []KeyVal {
}
func keyValCopy(set []KeyVal) []KeyVal {
ret := make([]KeyVal, len(set))
for i := range set {
ret[i] = set[i]
}
copy(ret, set)
return ret
}

View File

@ -4,7 +4,6 @@
package mtree
import (
"fmt"
"io/ioutil"
"os"
"path/filepath"
@ -42,7 +41,7 @@ func TestXattr(t *testing.T) {
}
if err := xattr.Set(dir, "user.test", []byte("directory")); err != nil {
t.Skip(fmt.Sprintf("skipping: %q does not support xattrs", dir))
t.Skipf("skipping: %q does not support xattrs", dir)
}
if err := xattr.Set(filepath.Join(dir, "file"), "user.test", []byte("regular file")); err != nil {
t.Fatal(err)

26
tar.go
View File

@ -373,7 +373,6 @@ func flatten(root *Entry, creator *dhCreator, keywords []Keyword) {
}
creator.DH.Entries = append(creator.DH.Entries, dotEntry)
}
return
}
// resolveHardlinks goes through an Entry tree, and finds the Entry's associated
@ -409,31 +408,6 @@ func resolveHardlinks(root *Entry, hardlinks map[string][]string, countlinks boo
}
}
// filter takes in a pointer to an Entry, and returns a slice of Entry's that
// satisfy the predicate p
func filter(root *Entry, p func(*Entry) bool) []Entry {
if root != nil {
var validEntrys []Entry
if len(root.Children) > 0 || root.Prev != nil {
for _, c := range root.Children {
// filter the sub-directory
if c.Prev != nil {
validEntrys = append(validEntrys, filter(c, p)...)
}
if p(c) {
if c.Prev == nil {
validEntrys = append([]Entry{*c}, validEntrys...)
} else {
validEntrys = append(validEntrys, *c)
}
}
}
return validEntrys
}
}
return nil
}
func (ts *tarStream) setErr(err error) {
ts.err = err
}

View File

@ -336,12 +336,6 @@ type fakeFile struct {
Xattrs map[string]string
}
// minimal tar archive that mimics what is in ./testdata/test.tar
var minimalFiles = []fakeFile{
{"x/", "", 0755, '5', 0, 0, nil},
{"x/files", "howdy\n", 0644, '0', 0, 0, nil},
}
func makeTarStream(ff []fakeFile) ([]byte, error) {
buf := new(bytes.Buffer)

View File

@ -2,7 +2,6 @@ package mtree
import (
"encoding/json"
"fmt"
"io/ioutil"
"os"
"path/filepath"
@ -32,7 +31,7 @@ func TestXattrUpdate(t *testing.T) {
}
if err := xattr.Set(dir, "user.test", []byte("directory")); err != nil {
t.Skip(fmt.Sprintf("skipping: %q does not support xattrs", dir))
t.Skipf("skipping: %q does not support xattrs", dir)
}
if err := xattr.Set(tmpfn, "user.test", []byte("regular file")); err != nil {
t.Fatal(err)

View File

@ -103,7 +103,7 @@ func Walk(root string, excludes []ExcludeFunc, keywords []Keyword, fsEval FsEval
}
keyFunc, ok := KeywordFuncs[keyword.Prefix()]
if !ok {
return fmt.Errorf("Unknown keyword %q for file %q", keyword.Prefix(), path)
return fmt.Errorf("unknown keyword %q for file %q", keyword.Prefix(), path)
}
kvs, err := creator.fs.KeywordFunc(keyFunc)(path, info, r)
if err != nil {
@ -138,7 +138,7 @@ func Walk(root string, excludes []ExcludeFunc, keywords []Keyword, fsEval FsEval
}
keyFunc, ok := KeywordFuncs[keyword.Prefix()]
if !ok {
return fmt.Errorf("Unknown keyword %q for file %q", keyword.Prefix(), path)
return fmt.Errorf("unknown keyword %q for file %q", keyword.Prefix(), path)
}
kvs, err := creator.fs.KeywordFunc(keyFunc)(path, info, r)
if err != nil {
@ -198,7 +198,7 @@ func Walk(root string, excludes []ExcludeFunc, keywords []Keyword, fsEval FsEval
}
keyFunc, ok := KeywordFuncs[keyword.Prefix()]
if !ok {
return fmt.Errorf("Unknown keyword %q for file %q", keyword.Prefix(), path)
return fmt.Errorf("unknown keyword %q for file %q", keyword.Prefix(), path)
}
kvs, err := creator.fs.KeywordFunc(keyFunc)(path, info, r)
if err != nil {