main.go 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. package main
  2. import (
  3. "flag"
  4. "fmt"
  5. "log"
  6. "os"
  7. "path/filepath"
  8. "text/template"
  9. "github.com/jinzhu/inflection"
  10. "gogs.carducci-dante.gov.it/karmen/core/renderer"
  11. tpl_util "gogs.carducci-dante.gov.it/karmen/util/template"
  12. )
  13. var (
  14. fnPatterns = map[string]string{
  15. "all": "%s",
  16. "show": "%s_show",
  17. "add_update": "%s_add_update",
  18. }
  19. )
  20. func main() {
  21. flag.Usage = func() {
  22. fmt.Fprintf(os.Stderr, "Usage of %s:\n", os.Args[0])
  23. flag.PrintDefaults()
  24. }
  25. outDir := flag.String("outdir", "./templates", "Output directory")
  26. tplDir := flag.String("tpldir", "./generator/templates", "Generator template directory")
  27. flag.Parse()
  28. if len(flag.Args()) == 0 {
  29. flag.Usage()
  30. return
  31. }
  32. model := flag.Args()[0]
  33. for tplName, pattern := range fnPatterns {
  34. name := fmt.Sprintf(pattern, model)
  35. funcMap := template.FuncMap{
  36. "query": renderer.Query,
  37. }
  38. tpl, err := tpl_util.LoadTextTemplate(filepath.Join(*tplDir, tplName+".tpl"), funcMap)
  39. if err != nil {
  40. panic(err)
  41. }
  42. filename := filepath.Join(*outDir, name+".html.tpl")
  43. oFn, err := os.Create(filename)
  44. if err != nil {
  45. panic(err)
  46. }
  47. defer oFn.Close()
  48. log.Printf("Generating html template %s for model %s...", filename, name)
  49. var data struct {
  50. Model string
  51. Models string
  52. }
  53. data.Model = inflection.Singular(name)
  54. data.Models = inflection.Plural(name)
  55. tpl.Execute(oFn, data)
  56. }
  57. }