| package main | 
 |  | 
 | import ( | 
 | 	"flag" | 
 | 	"fmt" | 
 | 	"html/template" | 
 | 	"os" | 
 | 	"text/tabwriter" | 
 |  | 
 | 	"github.com/FiloSottile/gvt/gbvendor" | 
 | ) | 
 |  | 
 | var ( | 
 | 	format string | 
 | ) | 
 |  | 
 | func addListFlags(fs *flag.FlagSet) { | 
 | 	fs.StringVar(&format, "f", "{{.Importpath}}\t{{.Repository}}{{.Path}}\t{{.Branch}}\t{{.Revision}}", "format template") | 
 | } | 
 |  | 
 | var cmdList = &Command{ | 
 | 	Name:      "list", | 
 | 	UsageLine: "list [-f format]", | 
 | 	Short:     "list dependencies one per line", | 
 | 	Long: `list formats the contents of the manifest file. | 
 |  | 
 | Flags: | 
 | 	-f | 
 | 		controls the template used for printing each manifest entry. If not supplied | 
 | 		the default value is "{{.Importpath}}\t{{.Repository}}{{.Path}}\t{{.Branch}}\t{{.Revision}}" | 
 |  | 
 | `, | 
 | 	Run: func(args []string) error { | 
 | 		m, err := vendor.ReadManifest(manifestFile()) | 
 | 		if err != nil { | 
 | 			return fmt.Errorf("could not load manifest: %v", err) | 
 | 		} | 
 | 		tmpl, err := template.New("list").Parse(format) | 
 | 		if err != nil { | 
 | 			return fmt.Errorf("unable to parse template %q: %v", format, err) | 
 | 		} | 
 | 		w := tabwriter.NewWriter(os.Stdout, 1, 2, 1, ' ', 0) | 
 | 		for _, dep := range m.Dependencies { | 
 | 			if err := tmpl.Execute(w, dep); err != nil { | 
 | 				return fmt.Errorf("unable to execute template: %v", err) | 
 | 			} | 
 | 			fmt.Fprintln(w) | 
 | 		} | 
 | 		return w.Flush() | 
 | 	}, | 
 | 	AddFlags: addListFlags, | 
 | } |