| // Copyright 2018 The Go Authors. All rights reserved. | |
| // Use of this source code is governed by a BSD-style | |
| // license that can be found in the LICENSE file. | |
| 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.NeedFiles | packages.NeedSyntax} | |
| 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) | |
| } | |
| } |