| 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, |
| } |