mirror of
				https://github.com/k3s-io/kubernetes.git
				synced 2025-11-04 07:49:35 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			82 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
			
		
		
	
	
			82 lines
		
	
	
		
			1.8 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
package main
 | 
						|
 | 
						|
import (
 | 
						|
	"go/build"
 | 
						|
	"regexp"
 | 
						|
	"strings"
 | 
						|
)
 | 
						|
 | 
						|
// Package represents a Go package.
 | 
						|
type Package struct {
 | 
						|
	Dir        string
 | 
						|
	Root       string
 | 
						|
	ImportPath string
 | 
						|
	Deps       []string
 | 
						|
	Standard   bool
 | 
						|
	Processed  bool
 | 
						|
 | 
						|
	GoFiles        []string
 | 
						|
	CgoFiles       []string
 | 
						|
	IgnoredGoFiles []string
 | 
						|
 | 
						|
	TestGoFiles  []string
 | 
						|
	TestImports  []string
 | 
						|
	XTestGoFiles []string
 | 
						|
	XTestImports []string
 | 
						|
 | 
						|
	Error struct {
 | 
						|
		Err string
 | 
						|
	}
 | 
						|
 | 
						|
	// --- New stuff for now
 | 
						|
	Imports      []string
 | 
						|
	Dependencies []build.Package
 | 
						|
}
 | 
						|
 | 
						|
// LoadPackages loads the named packages
 | 
						|
// Unlike the go tool, an empty argument list is treated as an empty list; "."
 | 
						|
// must be given explicitly if desired.
 | 
						|
// IgnoredGoFiles will be processed and their dependencies resolved recursively
 | 
						|
func LoadPackages(names ...string) (a []*Package, err error) {
 | 
						|
	debugln("LoadPackages", names)
 | 
						|
	if len(names) == 0 {
 | 
						|
		return nil, nil
 | 
						|
	}
 | 
						|
	for _, i := range importPaths(names) {
 | 
						|
		p, err := listPackage(i)
 | 
						|
		if err != nil {
 | 
						|
			return nil, err
 | 
						|
		}
 | 
						|
		a = append(a, p)
 | 
						|
	}
 | 
						|
	return a, nil
 | 
						|
}
 | 
						|
 | 
						|
func (p *Package) allGoFiles() []string {
 | 
						|
	var a []string
 | 
						|
	a = append(a, p.GoFiles...)
 | 
						|
	a = append(a, p.CgoFiles...)
 | 
						|
	a = append(a, p.TestGoFiles...)
 | 
						|
	a = append(a, p.XTestGoFiles...)
 | 
						|
	a = append(a, p.IgnoredGoFiles...)
 | 
						|
	return a
 | 
						|
}
 | 
						|
 | 
						|
// matchPattern(pattern)(name) reports whether
 | 
						|
// name matches pattern.  Pattern is a limited glob
 | 
						|
// pattern in which '...' means 'any string' and there
 | 
						|
// is no other special syntax.
 | 
						|
// Taken from $GOROOT/src/cmd/go/main.go.
 | 
						|
func matchPattern(pattern string) func(name string) bool {
 | 
						|
	re := regexp.QuoteMeta(pattern)
 | 
						|
	re = strings.Replace(re, `\.\.\.`, `.*`, -1)
 | 
						|
	// Special case: foo/... matches foo too.
 | 
						|
	if strings.HasSuffix(re, `/.*`) {
 | 
						|
		re = re[:len(re)-len(`/.*`)] + `(/.*)?`
 | 
						|
	}
 | 
						|
	reg := regexp.MustCompile(`^` + re + `$`)
 | 
						|
	return func(name string) bool {
 | 
						|
		return reg.MatchString(name)
 | 
						|
	}
 | 
						|
}
 |