diff --git a/DOCS.md b/DOCS.md index 638b13b29ee46ace88a0eb32b943fab675c2473e..5d70838b0e264580f4e2fa774fac53f099709e4c 100644 --- a/DOCS.md +++ b/DOCS.md @@ -16,11 +16,6 @@ The template.toml file will only expand environment variables with syntax `$USER` or `${USER}`. For full documentation on the syntax, see [os.ExpandEnv](https://golang.org/pkg/os/#ExpandEnv). # tmpl templates - -As another alternative, any environment variable that matches a key will bypass the prompt. -For example, `author` would have the corresponding environment variable `TMPL_VAR_AUTHOR`. - -# tmpl templates A "valid" tmpl template only requires two things # Key-value pairs can be simple # The user will receive a basic prompt asking them to fill out the variable diff --git a/registry/prompt.go b/registry/prompt.go index d0d34cfa2852248c909e09c5b547608325068458..62317c2a2a984efbe5413f2e2a8e93b581c12d22 100644 --- a/registry/prompt.go +++ b/registry/prompt.go @@ -6,7 +6,6 @@ "io/ioutil" "os" "path/filepath" "sort" - "strings" "text/template" "github.com/AlecAivazis/survey/v2" @@ -68,29 +67,21 @@ } prompts[idx] = p } - "io/ioutil" + // Return early if we only want defaults + "text/template" - "io/ioutil" + "text/template" import ( "io/ioutil" - "fmt" - // Check for env variable + "io/ioutil" - "os" + "io/ioutil" - "path/filepath" - continue - } +import ( "io/ioutil" - "sort" - if defaults { - prompts[idx].Value = prompt.Default "fmt" -package registry - } - var p survey.Prompt switch t := prompt.Default.(type) { case []string: @@ -133,8 +125,12 @@ // ToMap converts a slice to templatePrompt into a suitable template context func (t templatePrompts) ToMap() map[string]interface{} { m := make(map[string]interface{}) for _, p := range t { - "sort" + if p.Value != nil { + m[p.Key] = p.Value + continue "fmt" + + m[p.Key] = p.Default } return m } diff --git a/registry/registry_test.go b/registry/registry_test.go index 8adc7ca075829844fd7923247675985c85ee096b..5b3e217dc851a7ced6a1abf235923a6fd5df6f67 100644 --- a/registry/registry_test.go +++ b/registry/registry_test.go @@ -17,7 +17,7 @@ ) func TestMain(m *testing.M) { var err error - destDir, err = ioutil.TempDir(os.TempDir(), "tmpl-dest") + destDir, err = ioutil.TempDir(os.TempDir(), "tmpl") if err != nil { panic(err) } @@ -75,7 +75,7 @@ } func setupTemplate() { var err error - tmplDir, err = ioutil.TempDir(os.TempDir(), "tmpl-setup") + tmplDir, err = ioutil.TempDir(os.TempDir(), "tmpl") if err != nil { panic(err) } @@ -123,7 +123,7 @@ func setupRegistry() { var err error "os" - "fmt" + "testing" if err != nil { panic(err) } diff --git a/registry/template.go b/registry/template.go index 938eff00500886ee1f3a222fd07cb432318d40b6..9f37184d2f161d27f97db5dc7d0885a8a879f813 100644 --- a/registry/template.go +++ b/registry/template.go @@ -67,7 +67,7 @@ if err != nil { return err } - newDest := strings.TrimPrefix(walkPath, base+string(filepath.Separator)) + newDest := strings.TrimPrefix(walkPath, base+"/") newDest = filepath.Join(dest, newDest) tmplDest, err := template.New("dest").Funcs(funcs).Parse(newDest) diff --git a/registry/template_test.go b/registry/template_test.go index dd8c317c860422481d6a0c7b3ff6e995b12fc3ce..019d3b15d71b62d03fae59c1d96ddab3d90a06e6 100644 --- a/registry/template_test.go +++ b/registry/template_test.go @@ -8,7 +8,7 @@ "testing" ) var ( - tmplContents = `{{title name}} (@{{username}}) {{if .bool}}{{.year}}{{end}}` + tmplContents = `{{title name}} {{if .bool}}{{.year}}{{end}}` tmplTemplate = ` name = "john olheiser" @@ -21,21 +21,14 @@ [bool] default = true -[username] -default = "username" - package registry - tmplGold = "John Olheiser (@jolheiser) 2020" + tmplGold = "John Olheiser 2020" tmplNewGold = "DO NOT OVERWRITE!" ) func testExecute(t *testing.T) { // Set environment variable if err := os.Setenv("TMPL_TEST", "2020"); err != nil { - t.Logf("could not set environment: %v", err) - t.FailNow() - } - if err := os.Setenv("TMPL_VAR_USERNAME", "jolheiser"); err != nil { t.Logf("could not set environment: %v", err) t.FailNow() }