From 1c6c2c9c3a5d354a026789da34405f900d5e44b5 Mon Sep 17 00:00:00 2001 From: Adrian Hesketh Date: Sun, 20 Mar 2022 15:37:33 +0000 Subject: [PATCH] feat: add flag to allow generating code for a specific file --- cmd/templ/generatecmd/main.go | 25 ++++++++++++++++++++++--- cmd/templ/main.go | 7 ++++++- 2 files changed, 28 insertions(+), 4 deletions(-) diff --git a/cmd/templ/generatecmd/main.go b/cmd/templ/generatecmd/main.go index 77f15121a..d5eea9dd4 100644 --- a/cmd/templ/generatecmd/main.go +++ b/cmd/templ/generatecmd/main.go @@ -15,10 +15,29 @@ import ( const workerCount = 4 -func Run(args []string) (err error) { +type Arguments struct { + FileName string + Path string +} + +func Run(args Arguments) (err error) { + if args.FileName != "" { + return processSingleFile(args.FileName) + } + return processPath(args.Path) +} + +func processSingleFile(fileName string) error { + start := time.Now() + err := compile(fileName) + fmt.Printf("Generated code for %q in %s\n", fileName, time.Since(start)) + return err +} + +func processPath(path string) (err error) { start := time.Now() results := make(chan processor.Result) - go processor.Process(".", compile, workerCount, results) + go processor.Process(path, compile, workerCount, results) var successCount, errorCount int for r := range results { if r.Error != nil { @@ -30,7 +49,7 @@ func Run(args []string) (err error) { fmt.Printf("%s complete in %v\n", r.FileName, r.Duration) } fmt.Printf("Generated code for %d templates with %d errors in %s\n", successCount+errorCount, errorCount, time.Since(start)) - return + return err } func compile(fileName string) (err error) { diff --git a/cmd/templ/main.go b/cmd/templ/main.go index acaa18575..22f5e4f92 100644 --- a/cmd/templ/main.go +++ b/cmd/templ/main.go @@ -70,13 +70,18 @@ examples: func generateCmd(args []string) { cmd := flag.NewFlagSet("generate", flag.ExitOnError) + fileName := cmd.String("f", "", "Optionally generates code for a single file, e.g. -f header.templ") + path := cmd.String("path", ".", "Generates code for all files in path.") helpFlag := cmd.Bool("help", false, "Print help and exit.") err := cmd.Parse(args) if err != nil || *helpFlag { cmd.PrintDefaults() return } - err = generatecmd.Run(args) + err = generatecmd.Run(generatecmd.Arguments{ + FileName: *fileName, + Path: *path, + }) if err != nil { fmt.Println(err.Error()) os.Exit(1)