Skip to content

Commit

Permalink
(template): Expose ExecuteTemplate; Seperate parse and execute
Browse files Browse the repository at this point in the history
  • Loading branch information
KevinGimbel committed Jun 18, 2017
1 parent bcca53e commit 1a00f08
Show file tree
Hide file tree
Showing 2 changed files with 15 additions and 12 deletions.
9 changes: 6 additions & 3 deletions main.go
Original file line number Diff line number Diff line change
Expand Up @@ -83,11 +83,12 @@ func main() {
rand.Seed(time.Now().UnixNano())

if *templateFlag != "" {
if err := fakedata.ParseTemplate(*templateFlag, *limitFlag); err != nil {
template, err := fakedata.ParseTemplate(*templateFlag)
if err != nil {
fmt.Println(err)
os.Exit(1)
}

fakedata.ExecuteTemplate(template, *limitFlag)
os.Exit(0)
}

Expand All @@ -99,10 +100,12 @@ func main() {
os.Exit(1)
}

if err = fakedata.ParseTemplateFromPipe(string(t), *limitFlag); err != nil {
template, err := fakedata.ParseTemplateFromPipe(string(t))
if err != nil {
fmt.Println(err)
os.Exit(1)
}
fakedata.ExecuteTemplate(template, *limitFlag)
os.Exit(0)
}

Expand Down
18 changes: 9 additions & 9 deletions pkg/fakedata/template.go
Original file line number Diff line number Diff line change
Expand Up @@ -140,29 +140,29 @@ func splitPathName(r rune) bool {

// ParseTemplate takes a path to a template file as argument. It parses the template file and executes it on
// os.Stdout.
func ParseTemplate(path string, limit int) (err error) {
func ParseTemplate(path string) (tmp *template.Template, err error) {
tn := getTemplateNameFromPath(path)
tmp, err := template.New(tn).Funcs(generatorFunctions).ParseFiles(path)
tmp, err = template.New(tn).Funcs(generatorFunctions).ParseFiles(path)
if err != nil {
return err
return nil, err
}

return executeTemplate(tmp, limit)
return tmp, nil
}

// ParseTemplateFromPipe takes a string as template, parses it and executed the template. The function returns an error
// or nil on success. The template is written to os.Stdout
func ParseTemplateFromPipe(t string, limit int) (err error) {
tmp, err := template.New("stdin").Funcs(generatorFunctions).Parse(t)
func ParseTemplateFromPipe(t string) (tmp *template.Template, err error) {
tmp, err = template.New("stdin").Funcs(generatorFunctions).Parse(t)

if err != nil {
return err
return nil, err
}

return executeTemplate(tmp, limit)
return tmp, nil
}

func executeTemplate(t *template.Template, limit int) (err error) {
func ExecuteTemplate(t *template.Template, limit int) (err error) {
b := io.Writer(os.Stdout)
for i := 1; i <= limit; i++ {
err = t.Execute(b, nil)
Expand Down

0 comments on commit 1a00f08

Please sign in to comment.