diff --git a/cmd/cmd_bitbucket.go b/cmd/cmd_bitbucket.go index 98b7302..734a98c 100644 --- a/cmd/cmd_bitbucket.go +++ b/cmd/cmd_bitbucket.go @@ -2,7 +2,9 @@ package cmd import ( "fmt" + "html/template" "io" + "io/ioutil" "text/tabwriter" "github.com/urfave/cli/v2" @@ -71,6 +73,12 @@ func createBitbucket() *cli.Command { EnvVars: []string{"TABIA_OUTPUT_FORMAT"}, DefaultText: "", }, + &cli.PathFlag{ + Name: "template", + Aliases: []string{"T"}, + Usage: "Formats output using the given `TEMPLATE`", + TakesFile: true, + }, }, }, }, @@ -157,6 +165,24 @@ func bitbucketRepositories(c *cli.Context) error { if err != nil { return err } + case "templated": + if !c.IsSet("template") { + return fmt.Errorf("you must specify the path to the template") + } + + templateFile := c.Path("template") + tmplContent, err := ioutil.ReadFile(templateFile) + if err != nil { + return err + } + tmpl, err := template.New("repositories").Parse(string(tmplContent)) + if err != nil { + return err + } + err = tmpl.Execute(c.App.Writer, results) + if err != nil { + return err + } default: w := tabwriter.NewWriter(c.App.Writer, 3, 0, 2, ' ', tabwriter.TabIndent) fmt.Fprintln(w, "Project\tID\tSlug\tName\tPublic\tClone")