diff options
Diffstat (limited to 'pkg/config/lib/fossil/fossil.go')
| -rw-r--r-- | pkg/config/lib/fossil/fossil.go | 32 |
1 files changed, 32 insertions, 0 deletions
diff --git a/pkg/config/lib/fossil/fossil.go b/pkg/config/lib/fossil/fossil.go new file mode 100644 index 0000000..bf49882 --- /dev/null +++ b/pkg/config/lib/fossil/fossil.go @@ -0,0 +1,32 @@ +package fossil + +import ( + _ "embed" + "go.nc0.fr/svgu/pkg/config" + "go.starlark.net/starlark" + "go.starlark.net/starlarkstruct" + "sync" +) + +var ( + once = sync.Once{} + fossil = starlark.StringDict{} + //go:embed fossil.star + fossilFile string + fossilErr error +) + +// LoadFossilModule loads the Fossil module. +func LoadFossilModule(t *starlark.Thread) (starlark.StringDict, error) { + once.Do(func() { + env := starlark.StringDict{ + "module": starlark.NewBuiltin("module", + config.InternModule), + "make_module": starlark.NewBuiltin("mod", + starlarkstruct.MakeModule), + } + fossil, fossilErr = starlark.ExecFile(t, "fossil.star", fossilFile, env) + }) + + return fossil, fossilErr +} |
