2018-06-28 21:52:30 +03:00

56 lines
1.0 KiB
Go

package packages
import (
"go/build"
"path/filepath"
"github.com/golangci/golangci-lint/pkg/result/processors"
)
type Package struct {
bp *build.Package
isFake bool
dir string // dir != bp.dir only if isFake == true
}
func (pkg *Package) Files(includeTest bool) []string {
var pkgFiles []string
for _, f := range pkg.bp.GoFiles {
if !processors.IsCgoFilename(f) {
// skip cgo at all levels to prevent failures on file reading
pkgFiles = append(pkgFiles, f)
}
}
// TODO: add cgo files
if includeTest {
pkgFiles = append(pkgFiles, pkg.TestFiles()...)
}
for i, f := range pkgFiles {
pkgFiles[i] = filepath.Join(pkg.bp.Dir, f)
}
return pkgFiles
}
func (pkg *Package) Dir() string {
if pkg.dir != "" { // for fake packages
return pkg.dir
}
return pkg.bp.Dir
}
func (pkg *Package) IsTestOnly() bool {
return len(pkg.bp.GoFiles) == 0
}
func (pkg *Package) TestFiles() []string {
var pkgFiles []string
pkgFiles = append(pkgFiles, pkg.bp.TestGoFiles...)
pkgFiles = append(pkgFiles, pkg.bp.XTestGoFiles...)
return pkgFiles
}