1
0
forked from x/icebergs
icebergs/core/code/template.go
shylinux@163.com 1b21938136 opt xterm
2022-09-17 22:42:24 +08:00

88 lines
2.6 KiB
Go

package code
import (
"path"
ice "shylinux.com/x/icebergs"
"shylinux.com/x/icebergs/base/cli"
"shylinux.com/x/icebergs/base/mdb"
"shylinux.com/x/icebergs/base/nfs"
kit "shylinux.com/x/toolkits"
)
// const TEMPLATE = "template"
func init() {
return
Index.MergeCommands(ice.Commands{
TEMPLATE: {Name: "template name auto", Help: "模板", Actions: ice.MergeActions(ice.Actions{
ice.CTX_INIT: {Hand: func(m *ice.Message, arg ...string) {
for _, _template := range _template_list {
m.Cmd(TEMPLATE, mdb.CREATE, kit.SimpleKV(kit.Format(_template[0]), _template[1:]...))
}
}},
mdb.CREATE: {Name: "create type name text args", Help: "创建"},
nfs.DEFS: {Name: "defs file=hi/hi.js", Help: "生成", Hand: func(m *ice.Message, arg ...string) {
m.Option("tags", "`"+m.Option("tags")+"`")
if buf, err := kit.Render(m.Option(mdb.TEXT), m); !m.Warn(err) {
switch m.Cmd(nfs.DEFS, path.Join(m.Option(nfs.PATH), m.Option(nfs.FILE)), string(buf)); kit.Ext(m.Option(nfs.FILE)) {
case GO:
if m.Option(cli.MAIN) != "" && m.Option(mdb.ZONE) != "" {
_autogen_import(m, path.Join(m.Option(nfs.PATH), m.Option(cli.MAIN)), m.Option(mdb.ZONE), _autogen_mod(m, ice.GO_MOD))
}
default:
m.Cmdy(nfs.DEFS, path.Join(m.Option(nfs.PATH), m.Option(nfs.FILE)), m.Option(mdb.TEXT))
}
}
}},
}, mdb.HashAction(mdb.SHORT, mdb.NAME, mdb.FIELD, "time,type,name,text,args")), Hand: func(m *ice.Message, arg ...string) {
if mdb.HashSelect(m, arg...).Sort(mdb.NAME); len(arg) == 0 {
m.Cut("time,action,type,name,text,args")
m.Action(mdb.CREATE)
}
m.PushAction(nfs.DEFS, mdb.REMOVE)
}},
})
}
var _template_list = [][]ice.Any{
[]ice.Any{"", "txt", "网站索引", `
hi
hi
cli.qrcode
cli.system
cli.runtime
`},
[]ice.Any{"", "js", "前端模块", `Volcanos("onimport", {help: "导入数据", list: [], _init: function(can, msg, cb, target) {
can.onmotion.clear(can)
can.onappend.table(can, msg)
can.onappend.board(can, msg)
}})`},
[]ice.Any{"", "go", "后端模块", `package {{.Option "zone"}}
import (
"shylinux.com/x/ice"
)
type {{.Option "name"}} struct {
ice.{{.Option "type"}}
list string {{.Option "tags"}}
}
func (h {{.Option "name"}}) List(m *ice.Message, arg ...string) {
h.{{.Option "type"}}.List(m, arg...)
}
func init() { ice.Cmd("{{.Option "key"}}", {{.Option "name"}}{}) }
`, "args", `[
{"name": "zone", "value": "hi"},
{"name": "name", "value": "hi"},
{"name": "key", "value": "web.code.hi.hi"},
{"name": "type", "values": "Hash,Zone,List"},
{"name": "tags", "value": "name:\"list hash id auto insert\" help:\"数据\""},
{"name": "main", "value": "main.go"}
]`},
}