summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolas Paul <n@nc0.fr>2023-05-31 03:00:15 +0200
committerNicolas Paul <n@nc0.fr>2023-05-31 03:00:15 +0200
commit733499d41f3382fb7aa349bd038d4d9c9a00dc28 (patch)
tree9d377be2626c23a4f23f6f7ce5f76f3e599799a9
parent0a3f90add5e0fa55d8079fedf0c187f2a1c5c508 (diff)
Add Fossil lib
Signed-off-by: Nicolas Paul <n@nc0.fr>
-rw-r--r--pkg/config/lib/fossil/fossil.go32
-rw-r--r--pkg/config/lib/fossil/fossil.star8
-rw-r--r--pkg/config/starlark.go3
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)
}