diff --git a/core/handlers/create_note_handler.go b/core/handlers/create_note_handler.go index 4225430..5509d11 100644 --- a/core/handlers/create_note_handler.go +++ b/core/handlers/create_note_handler.go @@ -30,15 +30,11 @@ func (h *CreateNoteHandler) Handle(ctx context.Context, raw json.RawMessage) (an return nil, err } - data, err := template.GenerateTemplate(cmd.TemplatePath) + data, err := template.RenderTemplate(cmd.TemplatePath, cmd.Title) if err != nil { return nil, err } - if data == nil { - data = []byte("---\ntitle: " + cmd.Title + "\ntags: []\n---\n") - } - tags, err := frontmatter.ParseTags(data) if err != nil { return nil, err diff --git a/core/template/templater.go b/core/template/templater.go index 40576a7..443f5aa 100644 --- a/core/template/templater.go +++ b/core/template/templater.go @@ -1,17 +1,42 @@ +package templatepackage template + +import ( + "os" + "strings" + "time" +) + package template import ( "os" + "strings" + "time" ) - -func GenerateTemplate(templatePath string) ([]byte, error) { - if templatePath == "" { - return nil, nil - } - data, err := os.ReadFile(templatePath) +func RenderTemplate(templatePath string, title string, slug string) ([]byte, error) { + tmpl, err := readTemplate(templatePath, title) if err != nil { return nil, err } - return data, nil + + r := strings.NewReplacer( + "{{title}}", title, + "{{date}}", time.Now().Format("2006-01-02"), + "{{slug}}", slug, + ) + + return []byte(r.Replace(string(tmpl))), nil } + +func readTemplate(templatePath string, title string) ([]byte, error) { + if _, err := os.Stat(templatePath); os.IsNotExist(err) { + return createDefaultTemplate(title), nil + } + return os.ReadFile(templatePath) +} + +func createDefaultTemplate(title string) []byte { + return []byte("---\ntitle: " + title + "\ndate: " + time.Now().Format("2006-01-02") + "\n---\n") +} +