diff options
| author | Nicolas Paul <n@nc0.fr> | 2023-05-31 03:00:15 +0200 |
|---|---|---|
| committer | Nicolas Paul <n@nc0.fr> | 2023-05-31 03:00:15 +0200 |
| commit | 733499d41f3382fb7aa349bd038d4d9c9a00dc28 (patch) | |
| tree | 9d377be2626c23a4f23f6f7ce5f76f3e599799a9 | |
| parent | 0a3f90add5e0fa55d8079fedf0c187f2a1c5c508 (diff) | |
Add Fossil lib
Signed-off-by: Nicolas Paul <n@nc0.fr>
| -rw-r--r-- | pkg/config/lib/fossil/fossil.go | 32 | ||||
| -rw-r--r-- | pkg/config/lib/fossil/fossil.star | 8 | ||||
| -rw-r--r-- | pkg/config/starlark.go | 3 |
3 files changed, 43 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 +} diff --git a/pkg/config/lib/fossil/fossil.star b/pkg/config/lib/fossil/fossil.star new file mode 100644 index 0000000..d7eae85 --- /dev/null +++ b/pkg/config/lib/fossil/fossil.star @@ -0,0 +1,8 @@ +# Utilities to index Go modules hosted on Fossil repositories. + +_FOSSIL = "fossil" + +fossil = make_module( + "fossil", + FOSSIL = _FOSSIL, +) diff --git a/pkg/config/starlark.go b/pkg/config/starlark.go index abe6091..c58a800 100644 --- a/pkg/config/starlark.go +++ b/pkg/config/starlark.go @@ -2,6 +2,7 @@ package config import ( "fmt" + "go.nc0.fr/svgu/pkg/config/lib/fossil" "go.nc0.fr/svgu/pkg/config/lib/git" "go.nc0.fr/svgu/pkg/config/lib/hg" "go.nc0.fr/svgu/pkg/config/lib/svn" @@ -44,6 +45,8 @@ func load(t *starlark.Thread, module string) (starlark.StringDict, error) { return hg.LoadHgModule(t) case "svn.star": // subversion return svn.LoadSvnModule(t) + case "fossil.star": // fossil + return fossil.LoadFossilModule(t) default: return nil, fmt.Errorf("unknown module %q", module) } |
