seo API

seo

package

API reference for the seo package.

S
struct

plugin

cmd/rfw/plugins/seo/seo.go:12-12
type plugin struct

Methods

Name
Method

Returns

string
func (*plugin) Name() string
{ return "seo" }
Priority
Method

Returns

int
func (*plugin) Priority() int
{ return 0 }
PreBuild
Method

Parameters

Returns

error
func (*plugin) PreBuild(raw json.RawMessage) error
{
	var b strings.Builder
	b.WriteString("// Code generated by seo plugin. DO NOT EDIT.\n")
	b.WriteString("package main\n\n")
	b.WriteString("import \"github.com/rfwlab/rfw/v2/plugins/seo\"\n\n")
	b.WriteString("func init() {\n")
	b.WriteString("\t_ = seo.New().Build([]byte(" + strconv.Quote(string(raw)) + "))\n")
	b.WriteString("}\n")
	p.file = "rfw_seo.go"
	return os.WriteFile(p.file, []byte(b.String()), 0o644)
}
PostBuild
Method

Parameters

Returns

error
func (*plugin) PostBuild(json.RawMessage) error
{
	if p.file != "" {
		_ = os.Remove(p.file)
		p.file = ""
	}
	return nil
}
ShouldRebuild
Method

Parameters

string

Returns

bool
func (*plugin) ShouldRebuild(string) bool
{ return false }
Build
Method

Parameters

Returns

error
func (*plugin) Build(json.RawMessage) error
{ return nil }

Fields

Name Type Description
file string
F
function

init

cmd/rfw/plugins/seo/seo.go:14-14
func init()

{ plugins.Register(&plugin{}) }
F
function

TestPreAndPostBuild

TestPreAndPostBuild verifies the stub file is created and cleaned up.

Parameters

cmd/rfw/plugins/seo/seo_test.go:10-25
func TestPreAndPostBuild(t *testing.T)

{
	p := &plugin{}
	raw := json.RawMessage(`{"title":"x"}`)
	if err := p.PreBuild(raw); err != nil {
		t.Fatalf("PreBuild: %v", err)
	}
	if _, err := os.Stat("rfw_seo.go"); err != nil {
		t.Fatalf("stub not created: %v", err)
	}
	if err := p.PostBuild(nil); err != nil {
		t.Fatalf("PostBuild: %v", err)
	}
	if _, err := os.Stat("rfw_seo.go"); !os.IsNotExist(err) {
		t.Fatalf("stub not removed")
	}
}