35 lines
811 B
Go
35 lines
811 B
Go
package packages_test
|
|
|
|
import (
|
|
"flag"
|
|
"fmt"
|
|
"os"
|
|
|
|
"golang.org/x/tools/go/packages"
|
|
)
|
|
|
|
// Example demonstrates how to load the packages specified on the
|
|
// command line from source syntax.
|
|
func Example() {
|
|
flag.Parse()
|
|
|
|
// Many tools pass their command-line arguments (after any flags)
|
|
// uninterpreted to packages.Load so that it can interpret them
|
|
// according to the conventions of the underlying build system.
|
|
cfg := &packages.Config{Mode: packages.LoadSyntax}
|
|
pkgs, err := packages.Load(cfg, flag.Args()...)
|
|
if err != nil {
|
|
fmt.Fprintf(os.Stderr, "load: %v\n", err)
|
|
os.Exit(1)
|
|
}
|
|
if packages.PrintErrors(pkgs) > 0 {
|
|
os.Exit(1)
|
|
}
|
|
|
|
// Print the names of the source files
|
|
// for each package listed on the command line.
|
|
for _, pkg := range pkgs {
|
|
fmt.Println(pkg.ID, pkg.GoFiles)
|
|
}
|
|
}
|