diff --git a/config/config.go b/config/config.go index 5ac08fdd79f3facea8ec0fa2ffb996b29d8261f9..fa7eb12661ab072b8b761f2e16c6064bdfa9027b 100644 --- a/config/config.go +++ b/config/config.go @@ -14,25 +14,13 @@ type Config struct { Prompts []Prompt `yaml:"prompts"` } -// PromptType is a type of prompt -type PromptType string - -const ( - PromptTypeInput PromptType = "input" - PromptTypeMultiline PromptType = "multi" - PromptTypeEditor PromptType = "editor" - PromptTypeConfirm PromptType = "confirm" - PromptTypeSelect PromptType = "select" -) - // Prompt is a tmpl prompt type Prompt struct { - ID string `yaml:"id"` - Label string `yaml:"label"` - Help string `yaml:"help"` - Default string `yaml:"default"` - Options []string `yaml:"options"` - Type PromptType `yaml:"type"` + ID string `yaml:"id"` + Label string `yaml:"label"` + Help string `yaml:"help"` + Default string `yaml:"default"` + Options []string `yaml:"options"` } // Load loads a tmpl config diff --git a/registry/prompt.go b/registry/prompt.go index 73d733d5ef39a8d10a34466dc36cee43fefa9331..9f731ebed09f3cebf73d1d4ebe192258ed97280c 100644 --- a/registry/prompt.go +++ b/registry/prompt.go @@ -4,7 +4,6 @@ import ( "fmt" "os" "path/filepath" - "strconv" "strings" "text/template" @@ -56,8 +55,7 @@ } // Otherwise, prompt var p survey.Prompt - switch prompt.Type { - case config.PromptTypeSelect: + if len(prompt.Options) > 0 { opts := make([]string, 0, len(prompt.Options)) for idy, opt := range prompt.Options { opts[idy] = os.ExpandEnv(opt) @@ -67,26 +65,7 @@ Message: prompt.Label, Options: opts, Help: prompt.Help, } - case config.PromptTypeConfirm: - def, _ := strconv.ParseBool(os.ExpandEnv(prompt.Default)) - p = &survey.Confirm{ - Message: prompt.Label, - Help: prompt.Help, - Default: def, - } - case config.PromptTypeMultiline: - p = &survey.Multiline{ - Message: prompt.Label, - Default: os.ExpandEnv(prompt.Default), - Help: prompt.Help, - } - case config.PromptTypeEditor: - p = &survey.Editor{ - Message: prompt.Label, - Default: os.ExpandEnv(prompt.Default), - Help: prompt.Help, - } - default: + } else { p = &survey.Input{ Message: prompt.Label, Default: os.ExpandEnv(prompt.Default), @@ -94,13 +73,12 @@ Help: prompt.Help, } } - m := make(map[string]any) - if err := survey.AskOne(p, &m); err != nil { - return nil, fmt.Errorf("could not complete prompt: %w", err) + var a string + if err := survey.AskOne(p, &a); err != nil { + return nil, err } - a := m[""] prompts[idx].Value = a - os.Setenv(fmt.Sprintf("TMPL_PROMPT_%s", envKey), fmt.Sprint(a)) + os.Setenv(fmt.Sprintf("TMPL_PROMPT_%s", envKey), a) } return prompts, nil @@ -108,7 +86,7 @@ } type templatePrompt struct { config.Prompt - Value any + Value string } type templatePrompts []templatePrompt diff --git a/registry/registry.go b/registry/registry.go index 9a9dd0b875c8aacb241609f95eb90741058a2820..a0f40aeea8d764ec9d1dce0ee801cdd5b8d40c21 100644 --- a/registry/registry.go +++ b/registry/registry.go @@ -2,6 +2,7 @@ package registry import ( "errors" + "io/ioutil" "os" "path/filepath" "strings" @@ -222,7 +223,7 @@ return fi.Close() } func download(cloneURL, branch, dest string) error { - tmp, err := os.MkdirTemp(os.TempDir(), "tmpl") + tmp, err := ioutil.TempDir(os.TempDir(), "tmpl") if err != nil { return err } diff --git a/registry/registry_test.go b/registry/registry_test.go index 45c12e4fb4d05ac8fcec3239370e4b31a425ede5..eb99ce1b26218e84c6577d9c91d75ef64e7690fd 100644 --- a/registry/registry_test.go +++ b/registry/registry_test.go @@ -3,6 +3,7 @@ import ( "errors" "fmt" + "io/ioutil" "os" "path/filepath" "testing" @@ -66,7 +67,7 @@ } func setupTemplate() { var err error - tmplDir, err = os.MkdirTemp(os.TempDir(), "tmpl-setup") + tmplDir, err = ioutil.TempDir(os.TempDir(), "tmpl-setup") if err != nil { panic(err) } @@ -114,7 +115,7 @@ } func setupRegistry() { var err error - regDir, err = os.MkdirTemp(os.TempDir(), "tmpl-reg") + regDir, err = ioutil.TempDir(os.TempDir(), "tmpl-reg") if err != nil { panic(err) } diff --git a/registry/template.go b/registry/template.go index 239b02c96a6c1f4b5f5a92c776cbbdd57ef097b3..39ca612f00efd185bee81800f9ad1d104aebab71 100644 --- a/registry/template.go +++ b/registry/template.go @@ -3,6 +3,7 @@ import ( "bytes" "fmt" + "io/ioutil" "os" "path/filepath" "strings" @@ -35,7 +36,7 @@ } // Execute runs the Template and copies to dest func (t *Template) Execute(dest string, defaults, overwrite bool) error { - tmp, err := os.MkdirTemp(os.TempDir(), "tmpl") + tmp, err := ioutil.TempDir(os.TempDir(), "tmpl") if err != nil { return err } @@ -61,7 +62,7 @@ if walkInfo.IsDir() { return nil } - contents, err := os.ReadFile(walkPath) + contents, err := ioutil.ReadFile(walkPath) if err != nil { return err } diff --git a/registry/template_test.go b/registry/template_test.go index c2af0bfc750d294829327d1c80a5be5e7f3e4dec..138d84d12cf94a9e0eaa75cc77e7bdb0463d1b49 100644 --- a/registry/template_test.go +++ b/registry/template_test.go @@ -1,6 +1,7 @@ package registry import ( + "io/ioutil" "os" "path/filepath" "testing" @@ -50,7 +51,7 @@ assert.NoErr(err) // Should execute template // Check contents of file testPath := filepath.Join(destDir, "TEST") - contents, err := os.ReadFile(testPath) + contents, err := ioutil.ReadFile(testPath) assert.NoErr(err) // Should be able to read TEST file assert.Equal(string(contents), tmplGold) // Template should match golden file @@ -65,7 +66,7 @@ _, err = os.Lstat(tmplKeep) assert.True(err != nil) // .tmplkeep file should NOT be retained // Change file to test non-overwrite - err = os.WriteFile(testPath, []byte(tmplNewGold), os.ModePerm) + err = ioutil.WriteFile(testPath, []byte(tmplNewGold), os.ModePerm) assert.NoErr(err) // Writing file should succeed err = tmpl.Execute(destDir, true, false) diff --git a/schema/tmpl.json b/schema/tmpl.json index f88ce462abee12c10457ec8de7a501a812a4739b..a8fdb7f715ab668648744e180ce94485ebb29d00 100644 --- a/schema/tmpl.json +++ b/schema/tmpl.json @@ -43,32 +43,8 @@ "minItems": 1, "items": { "type": "string" } - }, - "type": { - "description": "The type of prompt", - "type": "string", - "enum": ["input", "multi", "select", "confirm", "editor"] } - }, - "anyOf": [ - { - "properties": { - "type": { - "const": "select" - } - }, - "required": ["options"] - }, - { - "properties": { - "type": { - "not": { - "const": "select" - } - } - } - } - ] + } } } }