diff options
| author | Nicolas Paul <n@nc0.fr> | 2023-05-31 00:27:49 +0200 |
|---|---|---|
| committer | Nicolas Paul <n@nc0.fr> | 2023-05-31 00:27:49 +0200 |
| commit | 5c34ce83e56e8eb8649d8ce831d2cc1d6b5ca5be (patch) | |
| tree | a882a5a8410331085747d4dab8d04f81105dac32 /pkg/types | |
| parent | 2c359752da4bcdf4566e7d2986fb99d7e4de36f9 (diff) | |
Add type structs for modules
Signed-off-by: Nicolas Paul <n@nc0.fr>
Diffstat (limited to 'pkg/types')
| -rw-r--r-- | pkg/types/types.go | 71 |
1 files changed, 71 insertions, 0 deletions
diff --git a/pkg/types/types.go b/pkg/types/types.go new file mode 100644 index 0000000..4610ad4 --- /dev/null +++ b/pkg/types/types.go @@ -0,0 +1,71 @@ +package types + +import "sync" + +// Vcs is an enum for version control systems supported by the standard Go +// toolchain. +// +// See https://pkg.go.dev/cmd/go#hdr-Module_configuration_for_non_public_modules +type Vcs string + +// Vcs enum. +const ( + VcsBazaar Vcs = "bzr" + VcsFossil Vcs = "fossil" + VcsGit Vcs = "git" + VcsMercurial Vcs = "hg" + VcsSubversion Vcs = "svn" +) + +// Module represents a Go module to index. +type Module struct { + Path string // module path (without domain) + Vcs Vcs // vcs system + Repo string // repository's home + Dir string // url template + File string // url template +} + +// Index is the global object representing the Starlark configuration. +type Index struct { + Domain string + Modules map[string]Module + // internal + lock sync.Mutex +} + +// SetDomain sets the domain of the index. +func (i *Index) SetDomain(d string) { + i.lock.Lock() + defer i.lock.Unlock() + i.Domain = d +} + +// AddModule adds a module to the index. +func (i *Index) AddModule(n string, m Module) { + i.lock.Lock() + defer i.lock.Unlock() + i.Modules[n] = m +} + +// GetModule returns a module from the index. +func (i *Index) GetModule(n string) Module { + i.lock.Lock() + defer i.lock.Unlock() + return i.Modules[n] +} + +// RemoveModule removes a module from the index. +func (i *Index) RemoveModule(n string) { + i.lock.Lock() + defer i.lock.Unlock() + delete(i.Modules, n) +} + +// CheckModule checks if a module is in the index. +func (i *Index) CheckModule(n string) bool { + i.lock.Lock() + defer i.lock.Unlock() + _, ok := i.Modules[n] + return ok +} |
