template / commit
Added ParametrizedText type.
config_test.go | 6 +++--- default_config.go | 48 +++++++++++++++++++++++++----------------------- file.go | 6 +++--- name_pattern.go | 2 +- name_pattern_test.go | 4 ++-- postscript.go | 2 +- postscript_test.go | 8 ++++---- profile.go | 11 ++++++----- profile_test.go | 20 ++++++++++---------- 9 files changed, 55 insertions(+), 52 deletions(-) diff --git a/config_test.go b/config_test.go index c214434..6d30a6f 100644 --- a/config_test.go +++ b/config_test.go @@ -107,7 +107,7 @@ func TestValidateConfig(t *testing.T) { { Name: "daily", IsDefault: true, - NamePatterns: []string{"daily"}, + NamePatterns: []ParameterizedText{"daily"}, File: File{ Template: "foo", }, @@ -117,7 +117,7 @@ func TestValidateConfig(t *testing.T) { { Name: "daily", IsDefault: true, - NamePatterns: []string{"daily"}, + NamePatterns: []ParameterizedText{"daily"}, Type: FileType, File: File{ Template: "foo", @@ -126,7 +126,7 @@ func TestValidateConfig(t *testing.T) { { Name: "daily2", IsDefault: true, - NamePatterns: []string{"daily"}, + NamePatterns: []ParameterizedText{"daily"}, Type: FileType, File: File{ Template: "foo", diff --git a/default_config.go b/default_config.go index 0de3dfc..bce8d8e 100644 --- a/default_config.go +++ b/default_config.go @@ -8,7 +8,7 @@ func defaultConfig() Config { Description: "Creates a MD file in ~/Dropbox/DailyNotes folder in the format YYYY-MM-DD[-vX].md", Path: "~/Dropbox/DailyNotes", Type: FileType, - NamePatterns: []string{"{{.Year}}-{{.Month}}-{{.Day}}.md"}, + NamePatterns: []ParameterizedText{"{{.Year}}-{{.Month}}-{{.Day}}.md"}, File: File{ Template: `# {{.Year}}-{{.Month}}-{{.Day}} @@ -16,14 +16,15 @@ Today's notes ## Todo -1. [ ] Check email -2. [ ] Check chat -3. [ ] Check calendar -4. [ ] Check yesterday's notes -5. [ ] Have fun!`, +1. Check email +2. Check chat +3. Check calendar +4. Check yesterday's notes +5. Have fun! +6. ADD MORE ITEMS HERE`, }, ScriptShell: "pwsh", - PostScripts: []string{ + PostScripts: []ParameterizedText{ "code . \"{{.Path}}\"", }, }, @@ -34,7 +35,7 @@ Today's notes Path: "~/Dropbox/Notes", IsDefault: true, Type: FileType, - NamePatterns: []string{ + NamePatterns: []ParameterizedText{ "{{$version := getVersion}}" + "{{.Year}}-{{.Month}}-{{.Day}}" + "{{if .ProjectName}}-{{.ProjectName}}{{end}}" + @@ -42,7 +43,7 @@ Today's notes ".md", }, ScriptShell: "pwsh", - PostScripts: []string{ + PostScripts: []ParameterizedText{ "code \"{{.Path}}\"", }, }, @@ -55,7 +56,7 @@ Today's notes TemplatePath: "~/.templates/blog-template.md", }, Type: FileType, - NamePatterns: []string{ + NamePatterns: []ParameterizedText{ "{{$version := getVersion}}" + "{{.Year}}-{{.Month}}-{{.Day}}" + "{{if .ProjectName}}-{{.ProjectName}}{{end}}" + @@ -63,7 +64,7 @@ Today's notes ".md", }, ScriptShell: "pwsh", - PostScripts: []string{ + PostScripts: []ParameterizedText{ "code . \"{{.Name}}\"", }, }, @@ -104,14 +105,14 @@ Sincerely, me `, }, Type: FileType, - NamePatterns: []string{ + NamePatterns: []ParameterizedText{ "{{$version := getVersion}}" + "{{.Year}}-{{.Month}}-{{.Day}}" + "{{if (gt $version 1)}}v{{$version}}{{end}}" + ".md", }, ScriptShell: "pwsh", - PostScripts: []string{ + PostScripts: []ParameterizedText{ "code . \"{{.Name}}\"", }, }, @@ -120,24 +121,25 @@ Sincerely, me Description: "Creates a folder in the ~/Work folder in the format YYYY-MM-DD[-hh][-mm][-ss][-ProjectName]", Path: "~/Work", Type: FolderType, - NamePatterns: []string{ + NamePatterns: []ParameterizedText{ "{{.Year}}-{{.Month}}-{{.Day}}{{if .ProjectName}}-{{.ProjectName}}{{end}}", "{{.Year}}-{{.Month}}-{{.Day}}-{{.Hour}}{{if .ProjectName}}-{{.ProjectName}}{{end}}", "{{.Year}}-{{.Month}}-{{.Day}}-{{.Hour}}-{{.Minute}}{{if .ProjectName}}-{{.ProjectName}}{{end}}", "{{.Year}}-{{.Month}}-{{.Day}}-{{.Hour}}-{{.Minute}}-{{.Second}}{{if .ProjectName}}-{{.ProjectName}}{{end}}", }, ScriptShell: "pwsh", - PostScripts: []string{ + PostScripts: []ParameterizedText{ "code \"{{.Path}}\"", }, + Files: []File{}, }, { Name: "folder", Description: "Creates a folder in the current folder in the format YYYY-MM-DD[-ProjectName][-vVersion]", Type: FolderType, ScriptShell: "pwsh", - PostScripts: []string{}, - NamePatterns: []string{ + PostScripts: []ParameterizedText{}, + NamePatterns: []ParameterizedText{ "{{$version := getVersion}}" + "{{.Year}}-{{.Month}}-{{.Day}}" + "{{if .ProjectName}}-{{.ProjectName}}{{end}}" + @@ -149,13 +151,13 @@ Sincerely, me Type: FolderType, Description: "Creates a folder in the current folder in the format create-react-app[-ProjectName][-vVersion], runs `npx create-react-app` to initialize the folder, and opens the folder in VSCode", ScriptShell: "pwsh", - NamePatterns: []string{ + NamePatterns: []ParameterizedText{ "{{$version := getVersion}}" + "create-react-app" + "{{if .ProjectName}}-{{.ProjectName}}{{end}}" + "{{if (gt $version 1)}}-n{{$version}}{{end}}", }, - PostScripts: []string{ + PostScripts: []ParameterizedText{ "npx create-react-app .", "code .", }, @@ -166,14 +168,14 @@ Sincerely, me OS: "Windows", Path: "C:/code", Type: FolderType, - NamePatterns: []string{ + NamePatterns: []ParameterizedText{ "{{.Year}}-{{.Month}}-{{.Day}}{{if .ProjectName}}-{{.ProjectName}}{{end}}", "{{.Year}}-{{.Month}}-{{.Day}}-{{.Hour}}{{if .ProjectName}}-{{.ProjectName}}{{end}}", "{{.Year}}-{{.Month}}-{{.Day}}-{{.Hour}}-{{.Minute}}{{if .ProjectName}}-{{.ProjectName}}{{end}}", "{{.Year}}-{{.Month}}-{{.Day}}-{{.Hour}}-{{.Minute}}-{{.Second}}{{if .ProjectName}}-{{.ProjectName}}{{end}}", }, ScriptShell: "pwsh", - PostScripts: []string{ + PostScripts: []ParameterizedText{ "git init", "code \"{{.Path}}\"", }, @@ -182,11 +184,11 @@ Sincerely, me Name: "test", Description: "Echoes the format YYYY-MM-DD[-hh][-mm][-ss][-ProjectName]", Type: ScriptType, - NamePatterns: []string{ + NamePatterns: []ParameterizedText{ "{{.Year}}-{{.Month}}-{{.Day}}{{if .ProjectName}}-{{.ProjectName}}{{end}}", }, ScriptShell: "pwsh", - PostScripts: []string{ + PostScripts: []ParameterizedText{ "echo \"Name={{.Name}}\"", "echo \"Path={{.Path}}\"", "echo \"Value1={{.Extras.value1}}\"", diff --git a/file.go b/file.go index e364f77..5574051 100644 --- a/file.go +++ b/file.go @@ -30,7 +30,7 @@ func createFilePatternData(now time.Time, projectName string, name string, extra } } -func createTemplateFile(srcPath string, destPath string, projectName string, name string, extras map[string]string, usr user.User) error { +func createFileFromTemplateFile(srcPath string, destPath string, projectName string, name string, extras map[string]string, usr user.User) error { now := time.Now() filePatternData := createFilePatternData(now, projectName, name, extras) @@ -60,12 +60,12 @@ func createTemplateFile(srcPath string, destPath string, projectName string, nam return nil } -func createTemplateString(templateText string, projectName string, name string, extras map[string]string) (string, error) { +func createTemplateString(templateText ParameterizedText, projectName string, name string, extras map[string]string) (string, error) { now := time.Now() filePatternData := createFilePatternData(now, projectName, name, extras) // parse template - template, err := template.New("text-template").Parse(templateText) + template, err := template.New("text-template").Parse(string(templateText)) if err != nil { return "", fmt.Errorf("error parsing template text: %v", err) } diff --git a/name_pattern.go b/name_pattern.go index 32fb4d3..11e0996 100644 --- a/name_pattern.go +++ b/name_pattern.go @@ -41,7 +41,7 @@ func createNewNameForProfile(now time.Time, projectName string, profile Profile, for { - template, err := template.Parse(namePattern) + template, err := template.Parse(string(namePattern)) if err != nil { return "", fmt.Errorf("error parsing name pattern %d: %w", index, err) } diff --git a/name_pattern_test.go b/name_pattern_test.go index f0e4dc9..485ccf8 100644 --- a/name_pattern_test.go +++ b/name_pattern_test.go @@ -16,7 +16,7 @@ func TestCreateNewName(t *testing.T) { profile := Profile{ IsDefault: true, Type: FileType, - NamePatterns: []string{ + NamePatterns: []ParameterizedText{ "{{.Extras.test1}}-{{.Year}}-{{.Month}}-{{.Day}}{{if .ProjectName}}-{{.ProjectName}}{{end}}.txt", "{{.Extras.test1}}-{{.Year}}-{{.Month}}-{{.Day}}-{{.Hour}}{{if .ProjectName}}-{{.ProjectName}}{{end}}.txt", "{{.Extras.test1}}-{{.Year}}-{{.Month}}-{{.Day}}-{{.Hour}}-{{.Minute}}-{{.Second}}-{{.ProjectName}}.txt", @@ -68,7 +68,7 @@ func TestCreateNewName_Index(t *testing.T) { profile := Profile{ IsDefault: true, Type: FileType, - NamePatterns: []string{ + NamePatterns: []ParameterizedText{ "{{.Extras.test1}}-{{$version := getVersion}}{{.Year}}-{{.Month}}-{{.Day}}v{{$version}}.txt", }, } diff --git a/postscript.go b/postscript.go index e8cfcce..d9967f5 100644 --- a/postscript.go +++ b/postscript.go @@ -26,7 +26,7 @@ func createPostScriptArrays(profile Profile, newName string, fullPath string, ex } for _, postScriptPattern := range profile.PostScripts { - template, err := template.New("postscript").Parse(postScriptPattern) + template, err := template.New("postscript").Parse(string(postScriptPattern)) if err != nil { return nil, err } diff --git a/postscript_test.go b/postscript_test.go index 8ae03f6..722cb62 100644 --- a/postscript_test.go +++ b/postscript_test.go @@ -22,7 +22,7 @@ func TestCreatePostScriptArrays(t *testing.T) { } testSuccess(Profile{ - PostScripts: []string{ + PostScripts: []ParameterizedText{ "echo \"{{.Name}}\"", }, }) @@ -30,15 +30,15 @@ func TestCreatePostScriptArrays(t *testing.T) { PostScripts: nil, }) testFailure(Profile{ - PostScripts: []string{}, + PostScripts: []ParameterizedText{}, }) testFailure(Profile{ - PostScripts: []string{ + PostScripts: []ParameterizedText{ "echo \"{{.Name\"", }, }) testFailure(Profile{ - PostScripts: []string{ + PostScripts: []ParameterizedText{ "echo \"{{.NameUnknown}}\"", }, }) diff --git a/profile.go b/profile.go index 0c6ba81..5d76df4 100644 --- a/profile.go +++ b/profile.go @@ -31,9 +31,11 @@ const ( All OSType = "All" ) +type ParameterizedText string + type File struct { TemplatePath string - Template string + Template ParameterizedText } type Profile struct { @@ -43,12 +45,11 @@ type Profile struct { Description string Path string Type ProfileType - NamePatterns []string - PostScripts []string + NamePatterns []ParameterizedText + PostScripts []ParameterizedText ScriptShell string OS OSType Files []File - // FileTemplatePath string } var forbiddenProfileNames = []string{ @@ -149,7 +150,7 @@ func processProfile(profile Profile, projectName string, extras map[string]strin useTemplate := profile.Template != "" if useTemplateFile { fmt.Printf("Creating file '%v' from template: %v\n", fullPath, profile.TemplatePath) - err := createTemplateFile(profile.TemplatePath, fullPath, projectName, newName, extras, usr) + err := createFileFromTemplateFile(profile.TemplatePath, fullPath, projectName, newName, extras, usr) if err != nil { return fmt.Errorf("error creating template file: %v", err) } diff --git a/profile_test.go b/profile_test.go index cc0182a..47fe19e 100644 --- a/profile_test.go +++ b/profile_test.go @@ -21,12 +21,12 @@ func TestValidateProfile(t *testing.T) { testSuccess(Profile{ Type: FileType, Name: "daily", - NamePatterns: []string{"{{.Date}}"}, + NamePatterns: []ParameterizedText{"{{.Date}}"}, }) testSuccess(Profile{ Type: FileType, Name: "daily", - NamePatterns: []string{"{{.Date}}"}, + NamePatterns: []ParameterizedText{"{{.Date}}"}, File: File{ Template: "foo", }, @@ -34,7 +34,7 @@ func TestValidateProfile(t *testing.T) { testSuccess(Profile{ Type: FileType, Name: "daily", - NamePatterns: []string{"{{.Date}}"}, + NamePatterns: []ParameterizedText{"{{.Date}}"}, File: File{ TemplatePath: "foo", }, @@ -65,13 +65,13 @@ func TestValidateProfile(t *testing.T) { testFailure(Profile{ Type: FileType, Name: "daily", - NamePatterns: []string{}, + NamePatterns: []ParameterizedText{}, }) // file template and file template path are set testFailure(Profile{ Type: FileType, Name: "daily", - NamePatterns: []string{"test"}, + NamePatterns: []ParameterizedText{"test"}, File: File{ TemplatePath: "foo", Template: "bar", @@ -81,7 +81,7 @@ func TestValidateProfile(t *testing.T) { testFailure(Profile{ Type: FolderType, Name: "daily", - NamePatterns: []string{"test"}, + NamePatterns: []ParameterizedText{"test"}, File: File{ Template: "bar", }, @@ -90,7 +90,7 @@ func TestValidateProfile(t *testing.T) { testFailure(Profile{ Type: FolderType, Name: "daily", - NamePatterns: []string{"test"}, + NamePatterns: []ParameterizedText{"test"}, File: File{ TemplatePath: "bar", }, @@ -99,14 +99,14 @@ func TestValidateProfile(t *testing.T) { testFailure(Profile{ Type: ScriptType, Name: "daily", - NamePatterns: []string{"test", "test2"}, + NamePatterns: []ParameterizedText{"test", "test2"}, }) // postscripts with no shell testFailure(Profile{ Type: ScriptType, Name: "daily", - NamePatterns: []string{"test"}, - PostScripts: []string{"test"}, + NamePatterns: []ParameterizedText{"test"}, + PostScripts: []ParameterizedText{"test"}, ScriptShell: "", })