GitRoot

craft your forge, build your project, grow your community freely
 1// SPDX-FileCopyrightText: 2025 Romain Maneschi <romain@gitroot.dev>
 2//
 3// SPDX-License-Identifier: EUPL-1.2
 4
 5package main
 6
 7import (
 8	"encoding/json"
 9	"fmt"
10
11	gitroot "gitroot.dev/libs/golang/plugin"
12	"gitroot.dev/libs/golang/plugin/model"
13)
14
15const CODE_PLUGIN = "apex_code"
16
17var defaultRun = []model.PluginRun{}
18
19type Plugin struct {
20	server model.Server
21}
22
23func (p *Plugin) Init(repoName string, confHasChanged bool, serializedConf string) error { return nil }
24func (p *Plugin) StartCommit(commit model.Commit) error                                  { return nil }
25func (p *Plugin) AddFile(file model.File) error                                          { return nil }
26func (p *Plugin) ModFile(file model.File) error                                          { return nil }
27func (p *Plugin) DelFile(file model.File) error                                          { return nil }
28func (p *Plugin) EndCommit(commit model.Commit) error                                    { return nil }
29func (p *Plugin) Finish() error                                                          { return nil }
30
31func Build(server model.Server) model.Plugin {
32	p := &Plugin{
33		server: server,
34	}
35	server.ExportFunc("renderMd", func(args map[string]string) (map[string]string, error) {
36		fp := args["fp"]
37		md := args["md"]
38		html, metas := p.mdToHTML(fp, []byte(md))
39		metasJson, err := json.Marshal(metas)
40		if err != nil {
41			return nil, err
42		}
43		server.Log(fmt.Sprintf("fp=%s for renderred html=%s", fp, html))
44		return map[string]string{
45			"html":  html,
46			"metas": string(metasJson),
47		}, nil
48	})
49	return p
50}
51
52//go:wasmexport install
53func main() {
54	gitroot.Register(defaultRun, Build, nil)
55}