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}
users.gno
1.10 Kb ยท 46 lines