tpls

Extendable, Fast Template Engine for Go
git clone git://git.lair.cx/tpls
Log | Files | Refs | README | LICENSE

cli.go (1325B)


      1 package tplc
      2 
      3 import (
      4 	"flag"
      5 	"log"
      6 	"os"
      7 	"path"
      8 )
      9 
     10 var (
     11 	flagDir string
     12 	flagDst string
     13 	flagExt string
     14 	flagPkg string
     15 )
     16 
     17 func init() {
     18 	flag.StringVar(
     19 		&flagDir, "dir", ".",
     20 		"Path to source directory.\nThe compiler does not process files in subdirectories.")
     21 	flag.StringVar(
     22 		&flagDst, "dst", "",
     23 		"Path to distribution directory.")
     24 	flag.StringVar(
     25 		&flagExt, "ext", ".html",
     26 		"Extension name with leading dot.\nOnly files with this extension are compiled.")
     27 	flag.StringVar(
     28 		&flagPkg, "pkg", "",
     29 		"Package name. For default, name of dist directory is used.",
     30 	)
     31 }
     32 
     33 func (b *Builder) Run() {
     34 	flag.Parse()
     35 
     36 	if len(flagDst) == 0 {
     37 		flagDst = flagDir
     38 	}
     39 
     40 	if len(flagPkg) == 0 {
     41 		pkg, err := getPackageName(flagDst)
     42 		if err != nil {
     43 			log.Fatalf("cannot get package name: %s\n", err.Error())
     44 		}
     45 		flagPkg = pkg
     46 	}
     47 
     48 	files, err := os.ReadDir(flagDir)
     49 	if err != nil {
     50 		log.Fatalf("readdir failed: %s", err.Error())
     51 	}
     52 
     53 	for _, file := range files {
     54 		if file.IsDir() {
     55 			continue
     56 		}
     57 
     58 		var (
     59 			src = path.Join(flagDir, file.Name())
     60 			dst = path.Join(flagDst, file.Name()+".go")
     61 		)
     62 
     63 		if path.Ext(src) != flagExt {
     64 			continue
     65 		}
     66 
     67 		log.Printf(
     68 			"Build: %s => %s",
     69 			src, dst,
     70 		)
     71 
     72 		err = b.build(src, dst, flagPkg)
     73 		if err != nil {
     74 			log.Fatalf("Build failed: %s\n", err.Error())
     75 		}
     76 	}
     77 }