Skip to content

Commit

Permalink
Fix package description template not having context (#96)
Browse files Browse the repository at this point in the history
  • Loading branch information
applejag authored Feb 19, 2025
1 parent 20da257 commit f2c94f9
Show file tree
Hide file tree
Showing 6 changed files with 79 additions and 70 deletions.
13 changes: 0 additions & 13 deletions pkg/config/template.go
Original file line number Diff line number Diff line change
Expand Up @@ -21,7 +21,6 @@ import (
"bytes"
"encoding"
"fmt"
"strings"
"text/template"

"github.com/RiskIdent/jelease/pkg/templatefuncs"
Expand Down Expand Up @@ -57,18 +56,6 @@ type TemplateContext struct {
JiraIssue string
}

func NewTemplateContextForPackage(pkg Package) (TemplateContext, error) {
tmplCtx := TemplateContext{
Package: pkg.Name,
}
desc, err := pkg.Description.Render(tmplCtx)
if err != nil {
return TemplateContext{}, fmt.Errorf("template package description: %w", err)
}
tmplCtx.PackageDescription = strings.TrimRight(desc, "\n\r\t ")
return tmplCtx, nil
}

// Ensure the type implements the interfaces
var (
_ pflag.Value = &Template{}
Expand Down
47 changes: 0 additions & 47 deletions pkg/config/template_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -62,50 +62,3 @@ func TestTemplateRender(t *testing.T) {
})
}
}

func TestNewTemplateContextForPackage(t *testing.T) {
tests := []struct {
name string
pkg Package
want TemplateContext
}{
{
name: "empty",
pkg: Package{},
want: TemplateContext{},
},
{
name: "only package name",
pkg: Package{Name: "my-pkg"},
want: TemplateContext{Package: "my-pkg"},
},
{
name: "only package desc",
pkg: Package{Description: MustTemplate("Pkg `{{.Package}}` desc")},
want: TemplateContext{PackageDescription: "Pkg `` desc"},
},
{
name: "package name and desc",
pkg: Package{
Name: "my-pkg",
Description: MustTemplate("Pkg `{{.Package}}` desc"),
},
want: TemplateContext{
Package: "my-pkg",
PackageDescription: "Pkg `my-pkg` desc",
},
},
}

for _, test := range tests {
t.Run(test.name, func(t *testing.T) {
got, err := NewTemplateContextForPackage(test.pkg)
if err != nil {
t.Fatal(err)
}
if got != test.want {
t.Errorf("wrong result\nwant: %#v\ngot: %#v", test.want, got)
}
})
}
}
6 changes: 4 additions & 2 deletions pkg/server/config_trypackage.go
Original file line number Diff line number Diff line change
Expand Up @@ -114,11 +114,13 @@ func (s HTTPServer) handlePostConfigTryPackage(c *gin.Context) {
}

func tryPackageConfig(model pages.ConfigTryPackageModel, patcher patch.Patcher) ([]github.PullRequest, error) {
tmplCtx, err := config.NewTemplateContextForPackage(model.Package)
tmplCtx, err := setTemplateContextPackageDescription(config.TemplateContext{
Package: model.Package.Name,
Version: model.Version,
}, model.Package.Description)
if err != nil {
return nil, err
}
tmplCtx.Version = model.Version
prs, err := patcher.CloneAndPublishAll(model.Package.Repos, tmplCtx)
if err != nil {
return nil, err
Expand Down
8 changes: 5 additions & 3 deletions pkg/server/prcreate.go
Original file line number Diff line number Diff line change
Expand Up @@ -98,14 +98,16 @@ func (s HTTPServer) handlePostPRCreate(c *gin.Context) {
cfgClone.DryRun = model.DryRun
patcherClone := s.patcher.CloneWithConfig(&cfgClone)

tmplCtx, err := config.NewTemplateContextForPackage(model.Package)
tmplCtx, err := setTemplateContextPackageDescription(config.TemplateContext{
Package: model.Package.Name,
Version: model.Version,
JiraIssue: model.JiraIssue,
}, model.Package.Description)
if err != nil {
model.Error = err
c.HTML(http.StatusOK, "", pages.PackagesCreatePR(model))
return
}
tmplCtx.Version = model.Version
tmplCtx.JiraIssue = model.JiraIssue
prs, err := patcherClone.CloneAndPublishAll(model.Package.Repos, tmplCtx)
if err != nil {
log.Error().Err(err).Str("project", model.Package.Name).Msg("Failed creating patches.")
Expand Down
21 changes: 16 additions & 5 deletions pkg/server/server.go
Original file line number Diff line number Diff line change
Expand Up @@ -177,16 +177,18 @@ func tryApplyChanges(j jira.Client, patcher patch.Patcher, release Release, issu
return
}

tmplCtx, err := config.NewTemplateContextForPackage(pkg)
tmplCtx, err := setTemplateContextPackageDescription(config.TemplateContext{
Package: pkg.Name,
Version: release.Version,
JiraIssue: issueRef.Key,
}, pkg.Description)
if err != nil {
createTemplatedComment(j, issueRef, cfg.Jira.Issue.Comments.PRFailed, TemplateContextError{
TemplateContext: tmplCtx,
Error: err.Error(),
})
return
}
tmplCtx.Version = release.Version
tmplCtx.JiraIssue = issueRef.Key

if cfg.Jira.Issue.PRDeferredCreation {
if cfg.HTTP.PublicURL == nil {
Expand Down Expand Up @@ -288,11 +290,11 @@ func ensureJiraIssue(j jira.Client, r Release, cfg *config.Config) (newJiraIssue
Version: r.Version,
}
if pkg, ok := cfg.TryFindPackage(r.Project); ok {
newCtx, err := config.NewTemplateContextForPackage(pkg)
newCtx, err := setTemplateContextPackageDescription(tmplCtx, pkg.Description)
if err != nil {
return newJiraIssue{}, err
}
tmplCtx.PackageDescription = newCtx.PackageDescription
tmplCtx = newCtx
}

issue, err := r.JiraIssue(&cfg.Jira.Issue, tmplCtx)
Expand Down Expand Up @@ -356,3 +358,12 @@ func ensureJiraIssue(j jira.Client, r Release, cfg *config.Config) (newJiraIssue
Created: false,
}, nil
}

func setTemplateContextPackageDescription(tmplCtx config.TemplateContext, pkgDesc *config.Template) (config.TemplateContext, error) {
desc, err := pkgDesc.Render(tmplCtx)
if err != nil {
return config.TemplateContext{}, fmt.Errorf("template package description: %w", err)
}
tmplCtx.PackageDescription = strings.TrimRight(desc, "\n\r\t ")
return tmplCtx, nil
}
54 changes: 54 additions & 0 deletions pkg/server/server_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -20,6 +20,8 @@ package server
import (
"net/url"
"testing"

"github.com/RiskIdent/jelease/pkg/config"
)

func TestCreateDeferredCreationURL(t *testing.T) {
Expand Down Expand Up @@ -122,3 +124,55 @@ func TestCreateDeferredCreationURL(t *testing.T) {
})
}
}

func TestSetTemplateContextPackageDescription(t *testing.T) {
tests := []struct {
name string
ctx config.TemplateContext
desc *config.Template
want string
}{
{
name: "empty",
ctx: config.TemplateContext{},
desc: nil,
want: "",
},
{
name: "only package name",
ctx: config.TemplateContext{Package: "my-pkg"},
desc: nil,
want: "",
},
{
name: "only package desc",
ctx: config.TemplateContext{},
desc: config.MustTemplate("Pkg `{{.Package}}` desc"),
want: "Pkg `` desc",
},
{
name: "package name and desc",
ctx: config.TemplateContext{Package: "my-pkg"},
desc: config.MustTemplate("Pkg `{{.Package}}` desc"),
want: "Pkg `my-pkg` desc",
},
{
name: "package name, version, and desc",
ctx: config.TemplateContext{Package: "my-pkg", Version: "v1.2.3"},
desc: config.MustTemplate("Pkg `{{.Package}}@{{.Version}}` desc"),
want: "Pkg `[email protected]` desc",
},
}

for _, test := range tests {
t.Run(test.name, func(t *testing.T) {
got, err := setTemplateContextPackageDescription(test.ctx, test.desc)
if err != nil {
t.Fatal(err)
}
if got.PackageDescription != test.want {
t.Errorf("wrong result\nwant: %#v\ngot: %#v", test.want, got.PackageDescription)
}
})
}
}

0 comments on commit f2c94f9

Please sign in to comment.