// SPDX-FileCopyrightText: 2025 Romain Maneschi // // SPDX-License-Identifier: EUPL-1.2 package main import ( "github.com/tidwall/gjson" gitroot "gitroot.dev/libs/golang/plugin" ) type conf struct { style string header string menu []link footer string generateGitWorktree bool } var defaultConf = map[string]any{ "style": "simple.min.css", "header": "

TITLE

", "menu": []link{ {Display: "🏠 Home", Link: "/"}, {Display: "📖 Readme", Link: "/README.html"}, {Display: "🐞 Issues", Link: "/boards/issues.html"}, {Display: "⚖ Licence", Link: "/LICENCE.html"}, }, "footer": "

Clone with git clone ssh://INSTANCE_URL/PROJECT_NAME

Hosted with ❤️ by Gitroot", "generateGitWorktree": true, } var defaultRun = []gitroot.PluginRun{{ Path: "**/*", Branch: []string{"main"}, When: gitroot.PluginRunWhenAll, Write: gitroot.PluginWrite{ Git: []gitroot.PluginWriteRight{{ Path: "index.md", Can: []gitroot.PluginWriteRightCan{gitroot.PluginWriteRightCanAdd}, }}, Web: []gitroot.PluginWriteRight{{ Path: "**/*", Can: gitroot.PluginWriteRightCanAll, }}, }, Configuration: defaultConf, }} type link struct { Link string `json:"link"` Display string `json:"display"` } func (p *Plugin) NewConf(serializedConf string) *conf { jsonConf := gjson.Parse(serializedConf) menus := []link{} for _, l := range jsonConf.Get("menu").Array() { menus = append(menus, link{ Link: l.Get("link").String(), Display: l.Get("display").String(), }) } return &conf{ style: jsonConf.Get("style").String(), header: jsonConf.Get("header").String(), menu: menus, footer: jsonConf.Get("footer").String(), generateGitWorktree: jsonConf.Get("generateGitWorktree").Bool(), } }