func init() { fs.BoolVar(&gb.Quiet, "q", gb.Quiet, "suppress log messages below ERROR level") fs.BoolVar(&gb.Verbose, "v", gb.Verbose, "enable log levels below INFO level") fs.StringVar(&cwd, "R", cmd.MustGetwd(), "set the project root") // actually the working directory to start the project root search fs.Usage = usage }
func list(ctx *gb.Context, args []string) error { gb.Debugf("list: %v", args) if formatStdin { var formatBuffer bytes.Buffer io.Copy(&formatBuffer, os.Stdin) format = formatBuffer.String() } args = cmd.ImportPaths(ctx, cmd.MustGetwd(), args) pkgs, err := cmd.ResolvePackages(ctx, args...) if err != nil { gb.Fatalf("unable to resolve: %v", err) } if jsonOutput { views := make([]*PackageView, 0, len(pkgs)) for _, pkg := range pkgs { views = append(views, NewPackageView(pkg)) } encoder := json.NewEncoder(os.Stdout) if err := encoder.Encode(views); err != nil { return fmt.Errorf("Error occurred during json encoding: %v", err) } } else { tmpl, err := template.New("list").Parse(format) if err != nil { return fmt.Errorf("unable to parse template %q: %v", format, err) } for _, pkg := range pkgs { if err := tmpl.Execute(os.Stdout, pkg); err != nil { return fmt.Errorf("unable to execute template: %v", err) } fmt.Fprintln(os.Stdout) } } return nil }