users.gno

1.10 Kb ยท 46 lines
 1package users
 2
 3import (
 4	"std"
 5	"strings"
 6
 7	"gno.land/p/demo/dao"
 8	"gno.land/p/demo/releases"
 9
10	"gno.land/r/gov/dao/bridge"
11)
12
13var (
14	cd        = std.ChainDomain()
15	changelog = releases.NewChangelog("r/gnoland/users")
16)
17
18const usersPrefix = "gno.land/r/gnoland/users/"
19
20func init() {
21	changelog.NewRelease("v1", "/r/gnoland/users/v1", "[Original PR](https://github.com/gnolang/gno/pull/3166)")
22}
23
24func Render(_ string) string {
25	return changelog.RenderAsTable(10)
26}
27
28func LatestRelease() string {
29	return cd + changelog.Latest().URL()
30}
31
32// ProposeNewRelease allows a GovDAO proposal to add a release to the changelog
33func ProposeNewRelease(newVerPkgPath, note string) dao.Executor {
34	ver := strings.TrimPrefix(newVerPkgPath, usersPrefix)
35	if ver == newVerPkgPath || // TrimPrefix returns unchanged newVerPkgPath if !HasPrefix
36		strings.Contains(ver, "/") { // if has prefix, has to be first child under
37		panic("r/gnoland/users: invalid version pkgpath")
38	}
39
40	cb := func() error {
41		changelog.NewRelease(ver, strings.TrimPrefix(newVerPkgPath, "gno.land"), note)
42		return nil
43	}
44
45	return bridge.GovDAO().NewGovDAOExecutor(cb)
46}