From 6b7a88e63566a9571b29f69b938068bcd524ccee Mon Sep 17 00:00:00 2001 From: Thanh Nguyen Date: Wed, 9 Sep 2020 19:17:49 +1000 Subject: [PATCH] AB#24: `scaffold` command supports quiet mode --- README.md | 6 +++--- RELEASE-NOTES.md | 5 +++++ g8/cmd_new.go | 2 +- g8/cmd_scaffold.go | 47 ++++++++++++++++++++++++++++++++++++---------- g8/flags.go | 6 +++--- g8/main.go | 2 +- 6 files changed, 50 insertions(+), 18 deletions(-) diff --git a/README.md b/README.md index a7b9298..58a0a8a 100644 --- a/README.md +++ b/README.md @@ -9,7 +9,7 @@ Features: - [x] Generate template output from local directory (protocol `file://`). - [x] Support scaffolding. -Latest version: [v0.5.0](RELEASE-NOTES.md). +Latest version: [v0.5.1](RELEASE-NOTES.md). ## Installation @@ -24,7 +24,7 @@ export GO111MODULE=on && go get github.com/btnguyen2k/go-giter8/g8 or you can specified a specific version: ``` -export GO111MODULE=on && go get github.com/btnguyen2k/go-giter8/g8@v0.5.0 +export GO111MODULE=on && go get github.com/btnguyen2k/go-giter8/g8@v0.5.1 ``` ### Upgrading @@ -38,7 +38,7 @@ export GO111MODULE=on && go get -u github.com/btnguyen2k/go-giter8/g8 or you can specified a specific version: ``` -export GO111MODULE=on && go get -u github.com/btnguyen2k/go-giter8/g8@v0.5.0 +export GO111MODULE=on && go get -u github.com/btnguyen2k/go-giter8/g8@v0.5.1 ``` ## Giter8 template diff --git a/RELEASE-NOTES.md b/RELEASE-NOTES.md index 3bf94a8..5ac5ea0 100644 --- a/RELEASE-NOTES.md +++ b/RELEASE-NOTES.md @@ -1,5 +1,10 @@ # go-giter8 release notes +## 2020-09-09 - v0.5.1 + +- AB#24: `scaffold` command supports "quiet" mode. + + ## 2020-09-07 - v0.5.0 - AB#24: Support "quiet" mode. diff --git a/g8/cmd_new.go b/g8/cmd_new.go index e24322f..eeaff6f 100644 --- a/g8/cmd_new.go +++ b/g8/cmd_new.go @@ -44,7 +44,7 @@ var commandNew = cli.Command{ Description: "Create a new project from giter8 template located on GitHub, repository must be in format /", Flags: []cli.Flag{ flagGit, - flagQuiet, + flagNoInputs, flagVerbose, }, Action: newAction, diff --git a/g8/cmd_scaffold.go b/g8/cmd_scaffold.go index e6906ee..c37b45b 100644 --- a/g8/cmd_scaffold.go +++ b/g8/cmd_scaffold.go @@ -19,10 +19,10 @@ var commandScaffold = cli.Command{ ShortName: "sf", Usage: "Generate files from a scaffolding", Description: "Generate files from a giter8 scaffold", - // Flags: []cli.Flag{ - // flagGit, - // flagVerbose, - // }, + Flags: []cli.Flag{ + flagNoInputs, + flagVerbose, + }, Action: scaffoldAction, } @@ -43,7 +43,7 @@ func generateScaffold(opts *Options) error { // must stand at project's root directory destDir := "." - // prompt the user to override the default properties + // load parameters fields, err := readFieldsFromFile(opts, srcDir+"/default.properties") exitIfError(err) @@ -54,9 +54,13 @@ func generateScaffold(opts *Options) error { } delete(fields, "verbatim") // remove system field "verbatim" - fmt.Println("Generating scaffold " + scaffoldName + "...") + // generate scaffold + fmt.Printf("Generating scaffold %s...", scaffoldName) + if opts.Verbose { + fmt.Println() + } prefixLen := len(srcDir) - return filepath.Walk(srcDir, func(path string, f os.FileInfo, err error) error { + err = filepath.Walk(srcDir, func(path string, f os.FileInfo, err error) error { if f.IsDir() || f.Name() == "default.properties" { return nil } @@ -71,11 +75,15 @@ func generateScaffold(opts *Options) error { return err } - fmt.Println("\tgenerating", destFileName) - + if opts.Verbose { + fmt.Printf("\tgenerating %s...", destFileName) + } // load file content inContent, err := ioutil.ReadFile(path) if err != nil { + if opts.Verbose { + fmt.Printf("error.\n") + } return err } outContent := inContent @@ -84,9 +92,28 @@ func generateScaffold(opts *Options) error { if !isFileMatched(relativePath, f, verbatim) { outContent, err = template.Render(inContent, fields) if err != nil { + if opts.Verbose { + fmt.Printf("error.\n") + } return err } } - return ioutil.WriteFile(destFileName, outContent, f.Mode()) + err = ioutil.WriteFile(destFileName, outContent, f.Mode()) + if opts.Verbose { + if err != nil { + fmt.Printf("error.\n") + } else { + fmt.Printf("done.\n") + } + } + return err }) + if !opts.Verbose { + if err != nil { + fmt.Printf("error.\n") + } else { + fmt.Printf("done.\n") + } + } + return err } diff --git a/g8/flags.go b/g8/flags.go index 65a05a0..dc289a2 100644 --- a/g8/flags.go +++ b/g8/flags.go @@ -33,9 +33,9 @@ const ( ) var ( - flagGit = cli.StringFlag{Name: fieldGit, Value: "/usr/bin/git", Usage: "relativePathToTemp to the git binary", EnvVar: "GIT"} - flagQuiet = cli.BoolFlag{Name: fieldNoInputs, Usage: "accept all default values, do not ask for input"} - flagVerbose = cli.BoolFlag{Name: fieldVerbose, Usage: "additional debugging"} + flagGit = cli.StringFlag{Name: fieldGit, Value: "/usr/bin/git", Usage: "relativePathToTemp to the git binary", EnvVar: "GIT"} + flagNoInputs = cli.BoolFlag{Name: fieldNoInputs, Usage: "do not ask for input, accept all default values from default.properties"} + flagVerbose = cli.BoolFlag{Name: fieldVerbose, Usage: "additional debugging"} ) // var Verbose bool diff --git a/g8/main.go b/g8/main.go index 50598cc..36f98c2 100644 --- a/g8/main.go +++ b/g8/main.go @@ -29,7 +29,7 @@ import ( const ( // Version of go-giter8 - Version = "0.5.0" + Version = "0.5.1" ) func main() {