Skip to content

Commit

Permalink
hof/gen: more bug fixes, cleanup test/watch, support go template in g…
Browse files Browse the repository at this point in the history
…enerator template filepath
  • Loading branch information
verdverm committed Jul 10, 2022
1 parent 4795126 commit db6141e
Show file tree
Hide file tree
Showing 10 changed files with 67 additions and 234 deletions.
82 changes: 49 additions & 33 deletions lib/gen/asmodule.go
Expand Up @@ -3,12 +3,14 @@ package gen
import (
"fmt"
"os"
"path/filepath"
"sort"
"strings"

"cuelang.org/go/cue"

"github.com/hofstadter-io/hof/lib/templates"
"github.com/hofstadter-io/hof/lib/yagu"
)

func (R *Runtime) AsModule() error {
Expand Down Expand Up @@ -99,51 +101,66 @@ func (R *Runtime) AsModule() error {
"WatchXcue": FP.WatchXcue,
}

// render template
ft, err := templates.CreateFromString("as-module", asModuleTemplate, nil)
if err != nil {
return err
}
bs, err := ft.Render(data)
if err != nil {
return err
// local helper to render and write embedded templates
render := func(outpath, content string) error {
if R.Verbosity > 0 {
fmt.Println("rendering:", outpath)
}
ft, err := templates.CreateFromString(outpath, content, nil)
if err != nil {
return err
}
bs, err := ft.Render(data)
if err != nil {
return err
}
if outpath == "-" {
fmt.Println(string(bs))
return nil
} else {
if strings.Contains(outpath, "/") {
dir, _ := filepath.Split(outpath)
err := os.MkdirAll(dir, 0755)
if err != nil {
return err
}
}
return os.WriteFile(outpath, bs, 0644)
}
}

// stdout or write file
if R.Verbosity > 0 {
fmt.Println("writing:", name)
}
if name == "-" {
fmt.Println(string(bs))
} else {
// write to file
err := os.WriteFile(name + ".cue", bs, 0644)
err = render(name, asModuleTemplate)
if err != nil {
return err
}

// also write mod file
// render template
ft, err := templates.CreateFromString("cue-mods", cuemodsTemplate, nil)
} else {
err = render(name + ".cue", asModuleTemplate)
if err != nil {
return err
}
bs, err := ft.Render(data)
err = render("cue.mods", cuemodsTemplate)
if err != nil {
return err
}
err = os.WriteFile("cue.mods", bs, 0644)

// todo, init module and fetch deps

// parting message
ft, err = templates.CreateFromString("final-msg", finalMsg, nil)
// err = render("cue.mod/module.cue", cuemodFileTemplate)
if err != nil {
return err
}
bs, err = ft.Render(data)
// todo, fetch deps
msg, err := yagu.Bash("hof mod vendor cue")
fmt.Println(msg)
if err != nil {
return err
}
fmt.Println(string(bs))

err = render("-", finalMsg)
if err != nil {
return err
}
}

if R.Verbosity > 0 {
Expand All @@ -153,13 +170,6 @@ func (R *Runtime) AsModule() error {
return nil
}

const finalMsg = `
Now run
hof mod init cue hof.io/{{ .Name }}
hof mod vendor cue
hof gen -G {{ .Name }}
`

const asModuleTemplate = `
package {{ .Name }}
Expand Down Expand Up @@ -301,6 +311,10 @@ import (
}
`

const cuemodFileTemplate = `
module: "hof.io/{{ .Name }}"
`

const cuemodsTemplate = `
module hof.io/{{ .Name }}
Expand All @@ -310,3 +324,5 @@ require (
github.com/hofstadter-io/hof v0.6.3
)
`

const finalMsg = `Now run hof gen -G {{ .Name }}`
14 changes: 14 additions & 0 deletions lib/gen/generator.go
Expand Up @@ -3,6 +3,7 @@ package gen
import (
"fmt"
"path/filepath"
"strings"
"time"

"cuelang.org/go/cue"
Expand Down Expand Up @@ -277,6 +278,19 @@ func (G *Generator) initFileGens() []error {
var errs []error

for _, F := range G.Out {
// support text/template in output file path
if strings.Contains(F.Filepath, "{{") {
ft, err := templates.CreateFromString("filepath", F.Filepath, nil)
if err != nil {
errs = append(errs, err)
}
bs, err := ft.Render(F.In)
if err != nil {
errs = append(errs, err)
}
F.Filepath = string(bs)
}

G.OrderedFiles = append(G.OrderedFiles, F)
G.Files[F.Filepath] = F
}
Expand Down
4 changes: 4 additions & 0 deletions lib/templates/helpers.go
Expand Up @@ -61,6 +61,7 @@ var funcMap = template.FuncMap{
"replace": Helper_replace,
"hasprefix": Helper_hasprefix,
"hassuffix": Helper_hassuffix,
"trimspace": Helper_trimspace,
"trimprefix": Helper_trimprefix,
"trimsuffix": Helper_trimsuffix,
"trimto": Helper_trimto_first,
Expand Down Expand Up @@ -290,6 +291,9 @@ func Helper_hassuffix(str, suf string) string {
}
return ""
}
func Helper_trimspace(str string) string {
return strings.TrimSpace(str)
}
func Helper_trimprefix(str, pre string) string {
return strings.TrimPrefix(str, pre)
}
Expand Down
25 changes: 0 additions & 25 deletions test/watch/.hof/shadow/DemoExample/out.txt

This file was deleted.

30 changes: 0 additions & 30 deletions test/watch/.hof/shadow/DemoExample/users.txt

This file was deleted.

5 changes: 0 additions & 5 deletions test/watch/cue.mods

This file was deleted.

5 changes: 0 additions & 5 deletions test/watch/data.cue
Expand Up @@ -5,11 +5,6 @@ import "strings"
users: [n=string]: {name: n, NAME: strings.ToUpper(n)}
users: {
alice: role: "user"
cow: role: "mooer"
darth: role: "evil"
mary: role: "admin"
}

data: {
foo: "bar"
}
86 changes: 0 additions & 86 deletions test/watch/demo.cue

This file was deleted.

21 changes: 0 additions & 21 deletions test/watch/out.txt

This file was deleted.

0 comments on commit db6141e

Please sign in to comment.