summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--pkg/config/lib/svn/svn.go32
-rw-r--r--pkg/config/lib/svn/svn.star8
-rw-r--r--pkg/config/starlark.go3
3 files changed, 43 insertions, 0 deletions
diff --git a/pkg/config/lib/svn/svn.go b/pkg/config/lib/svn/svn.go
new file mode 100644
index 0000000..6d71259
--- /dev/null
+++ b/pkg/config/lib/svn/svn.go
@@ -0,0 +1,32 @@
+package svn
+
+import (
+ _ "embed"
+ "go.nc0.fr/svgu/pkg/config"
+ "go.starlark.net/starlark"
+ "go.starlark.net/starlarkstruct"
+ "sync"
+)
+
+var (
+ once = sync.Once{}
+ svn = starlark.StringDict{}
+ //go:embed svn.star
+ svnFile string
+ svnErr error
+)
+
+// LoadSvnModule loads the Subversion module.
+func LoadSvnModule(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),
+ }
+ svn, svnErr = starlark.ExecFile(t, "svn.star", svnFile, env)
+ })
+
+ return svn, svnErr
+}
diff --git a/pkg/config/lib/svn/svn.star b/pkg/config/lib/svn/svn.star
new file mode 100644
index 0000000..16196d2
--- /dev/null
+++ b/pkg/config/lib/svn/svn.star
@@ -0,0 +1,8 @@
+# Utilities to index Go modules hosted on Subversion repositories.
+
+_SVN = "svn"
+
+svn = make_module(
+ "svn",
+ SVN = _SVN,
+)
diff --git a/pkg/config/starlark.go b/pkg/config/starlark.go
index 3f5c25c..abe6091 100644
--- a/pkg/config/starlark.go
+++ b/pkg/config/starlark.go
@@ -4,6 +4,7 @@ import (
"fmt"
"go.nc0.fr/svgu/pkg/config/lib/git"
"go.nc0.fr/svgu/pkg/config/lib/hg"
+ "go.nc0.fr/svgu/pkg/config/lib/svn"
"go.nc0.fr/svgu/pkg/types"
"go.starlark.net/starlark"
)
@@ -41,6 +42,8 @@ func load(t *starlark.Thread, module string) (starlark.StringDict, error) {
return git.LoadGitModule(t)
case "hg.star": // mercurial
return hg.LoadHgModule(t)
+ case "svn.star": // subversion
+ return svn.LoadSvnModule(t)
default:
return nil, fmt.Errorf("unknown module %q", module)
}