www.github.com/golangci/golangci-lint.git@v1.10.1/pkg/packages/package.go (about)

     1  package packages
     2  
     3  import (
     4  	"go/build"
     5  	"path/filepath"
     6  
     7  	"github.com/golangci/golangci-lint/pkg/goutils"
     8  )
     9  
    10  type Package struct {
    11  	bp *build.Package
    12  
    13  	isFake bool
    14  	dir    string // dir != bp.dir only if isFake == true
    15  }
    16  
    17  func (pkg *Package) Files(includeTest bool) []string {
    18  	var pkgFiles []string
    19  	for _, f := range pkg.bp.GoFiles {
    20  		if !goutils.IsCgoFilename(f) {
    21  			// skip cgo at all levels to prevent failures on file reading
    22  			pkgFiles = append(pkgFiles, f)
    23  		}
    24  	}
    25  
    26  	// TODO: add cgo files
    27  	if includeTest {
    28  		pkgFiles = append(pkgFiles, pkg.TestFiles()...)
    29  	}
    30  
    31  	for i, f := range pkgFiles {
    32  		pkgFiles[i] = filepath.Join(pkg.bp.Dir, f)
    33  	}
    34  
    35  	return pkgFiles
    36  }
    37  
    38  func (pkg *Package) Dir() string {
    39  	if pkg.dir != "" { // for fake packages
    40  		return pkg.dir
    41  	}
    42  
    43  	return pkg.bp.Dir
    44  }
    45  
    46  func (pkg *Package) IsTestOnly() bool {
    47  	return len(pkg.bp.GoFiles) == 0
    48  }
    49  
    50  func (pkg *Package) TestFiles() []string {
    51  	var pkgFiles []string
    52  	pkgFiles = append(pkgFiles, pkg.bp.TestGoFiles...)
    53  	pkgFiles = append(pkgFiles, pkg.bp.XTestGoFiles...)
    54  	return pkgFiles
    55  }
    56  
    57  func (pkg *Package) BuildPackage() *build.Package {
    58  	return pkg.bp
    59  }