1
0
forked from x/icebergs
This commit is contained in:
IT 老营长 @云轩领航-创始人 2024-06-08 23:06:35 +08:00
parent 74075002f1
commit 96713c1e75
9 changed files with 64 additions and 40 deletions

View File

@ -337,7 +337,7 @@ func ChatCmdPath(m *ice.Message, arg ...string) string {
return m.MergePodCmd("", kit.Select(m.ShortKey(), path.Join(arg...))) return m.MergePodCmd("", kit.Select(m.ShortKey(), path.Join(arg...)))
} }
func RequireFile(m *ice.Message, file string) string { func RequireFile(m *ice.Message, file string) string {
if strings.HasPrefix(file, nfs.PS) || strings.HasPrefix(file, ice.HTTP) { if strings.HasPrefix(file, nfs.PS) || strings.HasPrefix(file, ice.HTTP) || strings.Contains(file, "://") {
return file return file
} else if file != "" { } else if file != "" {
return nfs.P + file return nfs.P + file

View File

@ -141,6 +141,10 @@ func init() {
m.Cmdy(COMPLETE, kit.Ext(m.Option(mdb.FILE)), m.Option(nfs.FILE), m.Option(nfs.PATH)) m.Cmdy(COMPLETE, kit.Ext(m.Option(mdb.FILE)), m.Option(nfs.FILE), m.Option(nfs.PATH))
}}, }},
COMPILE: {Hand: func(m *ice.Message, arg ...string) { COMPILE: {Hand: func(m *ice.Message, arg ...string) {
if m.Option(nfs.PATH) == ice.USR_PROGRAM {
m.Cmd(cli.SYSTEM, cli.MAKE, kit.Dict(cli.CMD_DIR, m.Option(nfs.PATH)))
return
}
if msg := m.Cmd(COMPILE, ice.SRC_MAIN_GO, ice.BIN_ICE_BIN); cli.IsSuccess(msg) { if msg := m.Cmd(COMPILE, ice.SRC_MAIN_GO, ice.BIN_ICE_BIN); cli.IsSuccess(msg) {
m.GoSleep30ms(func() { m.Cmd(UPGRADE, cli.RESTART) }) m.GoSleep30ms(func() { m.Cmd(UPGRADE, cli.RESTART) })
} else { } else {

View File

@ -110,7 +110,7 @@ func init() {
m.Cmd(mdb.PRUNES, m.Prefix(IDE), "", mdb.HASH, m.OptionSimple(mdb.NAME)) m.Cmd(mdb.PRUNES, m.Prefix(IDE), "", mdb.HASH, m.OptionSimple(mdb.NAME))
}}, }},
}, gdb.EventsAction(web.SPACE_GRANT, web.SPACE_LOGIN_CLOSE), mdb.ImportantHashAction( }, gdb.EventsAction(web.SPACE_GRANT, web.SPACE_LOGIN_CLOSE), mdb.ImportantHashAction(
mdb.SHORT, ACCESS, mdb.FIELD, "time,type,access,icons,usernick,appid", tcp.SERVER, CGI_BIN, mdb.SHORT, ACCESS, mdb.FIELD, "time,type,access,icons,usernick,appid,secret,token", tcp.SERVER, CGI_BIN,
)), Hand: func(m *ice.Message, arg ...string) { )), Hand: func(m *ice.Message, arg ...string) {
mdb.HashSelect(m, arg...).PushAction(web.SSO, mdb.REMOVE).StatusTimeCount(mdb.ConfigSimple(m, ACCESS, APPID), web.SERVE, m.MergeLink("/chat/wx/login/")) mdb.HashSelect(m, arg...).PushAction(web.SSO, mdb.REMOVE).StatusTimeCount(mdb.ConfigSimple(m, ACCESS, APPID), web.SERVE, m.MergeLink("/chat/wx/login/"))
m.RewriteAppend(func(value, key string, index int) string { m.RewriteAppend(func(value, key string, index int) string {

View File

@ -107,11 +107,25 @@ const IDE = "ide"
func init() { func init() {
Index.MergeCommands(ice.Commands{ Index.MergeCommands(ice.Commands{
IDE: {Name: "ide hash auto", Help: "集成开发环境", Icon: "wxdev.png", Meta: Meta(), Actions: ice.MergeActions(ice.Actions{ IDE: {Name: "ide hash auto", Help: "集成开发环境", Meta: Meta(), Actions: ice.MergeActions(ice.Actions{
mdb.INPUTS: {Hand: func(m *ice.Message, arg ...string) { mdb.INPUTS: {Hand: func(m *ice.Message, arg ...string) {
switch mdb.HashInputs(m, arg); arg[0] { switch mdb.HashInputs(m, arg); arg[0] {
case PAGES: case PAGES:
m.Push(arg[0], kit.Value(kit.UnMarshal(m.Cmdx(nfs.CAT, path.Join(mdb.Config(m, PROJECT), APP_JSON))), PAGES)) m.Push(arg[0], kit.Value(kit.UnMarshal(m.Cmdx(nfs.CAT, path.Join(mdb.Config(m, PROJECT), APP_JSON))), PAGES))
case APPID:
m.Cmd(ACCESS).Table(func(value ice.Maps) {
if value[mdb.TYPE] == ice.APP {
m.Push("", value, []string{APPID, aaa.USERNICK})
}
})
case web.SERVE:
m.OptionFields(web.CLIENT_ORIGIN, web.CLIENT_TYPE)
m.Cmd(web.SPIDE).Table(func(value ice.Maps) {
if value[web.CLIENT_TYPE] == nfs.REPOS {
m.Push(arg[0], value[web.CLIENT_ORIGIN])
}
})
m.SortStr(arg[0])
case tcp.WIFI: case tcp.WIFI:
m.Cmdy(tcp.WIFI).Cut(tcp.SSID) m.Cmdy(tcp.WIFI).Cut(tcp.SSID)
case web.WEIXIN: case web.WEIXIN:
@ -125,12 +139,12 @@ func init() {
}) })
} }
}}, }},
aaa.LOGIN: {Help: "登录", Hand: func(m *ice.Message, arg ...string) { aaa.LOGIN: {Hand: func(m *ice.Message, arg ...string) {
p := nfs.TempName(m) p := nfs.TempName(m)
m.GoSleep3s(func() { web.PushNoticeGrow(m, ice.Render(m, ice.RENDER_IMAGES, web.SHARE_LOCAL+p)) }) m.GoSleep3s(func() { web.PushNoticeGrow(m, ice.Render(m, ice.RENDER_IMAGES, web.SHARE_LOCAL+p)) })
IdeCli(m, "", _ide_args_cli(m), _ide_args_qrcode(m, p)).ProcessRefresh() IdeCli(m, "", _ide_args_cli(m), _ide_args_qrcode(m, p)).ProcessRefresh()
}}, }},
code.AUTOGEN: {Name: "autogen projectname*='终端工具链' appid*='wxf4e5104d83476ed6' serve*='https://2021.shylinux.com'", Help: "生成", Icon: "bi bi-tools", Hand: func(m *ice.Message, arg ...string) { code.AUTOGEN: {Name: "autogen projectname*='终端工具链' appid* serve*", Help: "生成", Icon: "bi bi-folder-check", Hand: func(m *ice.Message, arg ...string) {
_ide_autogen_utils(m) _ide_autogen_utils(m)
_ide_autogen_pages(m) _ide_autogen_pages(m)
p := ice.USR_PROGRAM p := ice.USR_PROGRAM
@ -138,51 +152,43 @@ func init() {
m.Cmd(nfs.DEFS, p+PROJECT_CONFIG_JSON, kit.Formats(kit.Dict(m.OptionSimple(APPID, "projectname")))) m.Cmd(nfs.DEFS, p+PROJECT_CONFIG_JSON, kit.Formats(kit.Dict(m.OptionSimple(APPID, "projectname"))))
IdeCli(m.Sleep3s(), cli.OPEN, "--project", kit.Path(mdb.Config(m, PROJECT, p))).ProcessInner() IdeCli(m.Sleep3s(), cli.OPEN, "--project", kit.Path(mdb.Config(m, PROJECT, p))).ProcessInner()
}}, }},
web.ADMIN: {Help: "后台", Hand: func(m *ice.Message, arg ...string) { cli.MAKE: {Help: "构建", Icon: "bi bi-tools", Hand: func(m *ice.Message, arg ...string) {
m.ProcessOpen("https://mp.weixin.qq.com/")
}},
DOC: {Help: "文档", Hand: func(m *ice.Message, arg ...string) {
m.ProcessOpen("https://developers.weixin.qq.com/miniprogram/dev/api/")
}},
cli.MAKE: {Help: "构建", Hand: func(m *ice.Message, arg ...string) {
kit.If(m.Option(mdb.HASH), func(p string) { mdb.Config(m, CURRENT, p) }) kit.If(m.Option(mdb.HASH), func(p string) { mdb.Config(m, CURRENT, p) })
m.Options(m.Cmd("", kit.Select(mdb.Config(m, CURRENT), arg, 0)).AppendSimple()) m.Options(m.Cmd("", kit.Select(mdb.Config(m, CURRENT), arg, 0)).AppendSimple())
kit.If(m.Option(cli.PWD), func(p string) { kit.If(m.Option(cli.PWD), func(p string) {
kit.If(p == kit.Path(ice.USR_VOLCANOS+PUBLISH_CLIENT_MP), func() { _ide_autogen_utils(m); _ide_autogen_pages(m) }) // kit.If(p == kit.Path(ice.USR_VOLCANOS+PUBLISH_CLIENT_MP), func() { _ide_autogen_utils(m); _ide_autogen_pages(m) })
}) })
m.Cmd("", AUTO_PREVIEW) m.Cmd("", AUTO_PREVIEW)
}}, }},
AUTO_PREVIEW: {Help: "预览", Icon: "bi bi-wechat", Hand: func(m *ice.Message, arg ...string) { web.ADMIN: {Hand: func(m *ice.Message, arg ...string) {
m.ProcessOpen("https://mp.weixin.qq.com/")
}},
DOC: {Hand: func(m *ice.Message, arg ...string) {
m.ProcessOpen("https://developers.weixin.qq.com/miniprogram/dev/api/")
}},
AUTO_PREVIEW: {Icon: "bi bi-wechat", Hand: func(m *ice.Message, arg ...string) {
kit.If(m.Option(mdb.HASH), func(p string) { mdb.Config(m, CURRENT, p) }) kit.If(m.Option(mdb.HASH), func(p string) { mdb.Config(m, CURRENT, p) })
IdeCli(m, "", _ide_args_cli(m)).ProcessInner() IdeCli(m, "", _ide_args_cli(m)).ProcessInner()
}}, }},
PREVIEW: {Help: "体验", Icon: "bi bi-qr-code-scan", Hand: func(m *ice.Message, arg ...string) { PREVIEW: {Icon: "bi bi-qr-code-scan", Hand: func(m *ice.Message, arg ...string) {
kit.If(m.Option(mdb.HASH), func(p string) { mdb.Config(m, CURRENT, p) }) kit.If(m.Option(mdb.HASH), func(p string) { mdb.Config(m, CURRENT, p) })
p := nfs.TempName(m) p := nfs.TempName(m)
IdeCli(m, "", _ide_args_cli(m), _ide_args_qrcode(m, p)).EchoImages(web.SHARE_LOCAL + p).ProcessInner() IdeCli(m, "", _ide_args_cli(m), _ide_args_qrcode(m, p)).EchoImages(web.SHARE_LOCAL + p).ProcessInner()
}}, }},
PUSH: {Name: "push weixin", Help: "推送", Icon: "bi bi-arrow-up-right-square", Hand: func(m *ice.Message, arg ...string) { PUSH: {Name: "push weixin", Icon: "bi bi-arrow-up-right-square", Hand: func(m *ice.Message, arg ...string) {
defer m.ProcessHold() defer m.ProcessHold()
defer web.ToastProcess(m)() defer web.ToastProcess(m)()
m.Cmd(web.SPACE, m.Option(web.WEIXIN), lex.PARSE, m.Cmdx("", m.Option(mdb.HASH))) m.Cmd(web.SPACE, m.Option(web.WEIXIN), lex.PARSE, m.Cmdx("", m.Option(mdb.HASH)))
}}, }},
}, web.StatsAction("", "小程序场景数"), mdb.ExportHashAction( }, mdb.ExportHashAction(mdb.FIELD, "time,hash,name,text,pages,space,index,args,wifi", cli.DARWIN, "/Applications/wechatwebdevtools.app/Contents/MacOS/cli")), Hand: func(m *ice.Message, arg ...string) {
mdb.FIELD, "time,hash,name,text,pages,space,index,args,wifi", if tcp.IsLocalHost(m, m.Option(ice.MSG_USERIP)) && kit.Value(kit.UnMarshal(IdeCli(m.Spawn(), ISLOGIN).Append(cli.CMD_OUT)), aaa.LOGIN) != true {
cli.DARWIN, "/Applications/wechatwebdevtools.app/Contents/MacOS/cli", m.EchoInfoButton("请微信授权", aaa.LOGIN)
)), Hand: func(m *ice.Message, arg ...string) {
if len(arg) == 0 && tcp.IsLocalHost(m, m.Option(ice.MSG_USERIP)) && kit.Value(kit.UnMarshal(IdeCli(m.Spawn(), ISLOGIN).Append(cli.CMD_OUT)), aaa.LOGIN) != true {
m.EchoInfoButton("请登录: ", aaa.LOGIN)
return return
} else if !nfs.Exists(m, ice.USR_PROGRAM) { } else if !nfs.Exists(m, ice.USR_PROGRAM) {
m.EchoInfoButton("请生成项目: ", code.AUTOGEN) m.EchoInfoButton("请生成项目", code.AUTOGEN)
return return
} else if mdb.HashSelect(m, arg...); tcp.IsLocalHost(m, m.Option(ice.MSG_USERIP)) {
m.PushAction(AUTO_PREVIEW, PREVIEW, PUSH, mdb.REMOVE).Action(aaa.LOGIN, code.AUTOGEN, mdb.CREATE, web.ADMIN, DOC)
} else {
m.PushAction(AUTO_PREVIEW, PREVIEW, PUSH, mdb.REMOVE).Action(aaa.LOGIN, code.AUTOGEN, mdb.CREATE, web.ADMIN, DOC)
// m.PushAction(PUSH, mdb.REMOVE).Action(mdb.CREATE, web.ADMIN, DOC)
} }
if len(arg) > 0 { if mdb.HashSelect(m, arg...).PushAction(AUTO_PREVIEW, PREVIEW, PUSH, mdb.REMOVE).Action(mdb.CREATE, cli.MAKE, code.AUTOGEN, aaa.LOGIN, web.ADMIN, DOC); len(arg) > 0 {
m.Options(m.AppendSimple(web.SPACE, ctx.INDEX, ctx.ARGS, tcp.WIFI)) m.Options(m.AppendSimple(web.SPACE, ctx.INDEX, ctx.ARGS, tcp.WIFI))
p := kit.MergeURL2(kit.Select(web.UserHost(m), m.Option(web.SERVE)), path.Join(nfs.PS+m.Append(PAGES)), _ide_args(m)) p := kit.MergeURL2(kit.Select(web.UserHost(m), m.Option(web.SERVE)), path.Join(nfs.PS+m.Append(PAGES)), _ide_args(m))
m.PushQRCode(cli.QRCODE, p).Push(web.LINK, p).Echo(p) m.PushQRCode(cli.QRCODE, p).Push(web.LINK, p).Echo(p)

View File

@ -8,4 +8,4 @@ qrcode `https://mp.weixin.qq.com/a/~HkylKD4DZShrgSm5GuXWLQ~~`
field web.chat.wx.access field web.chat.wx.access
field web.chat.wx.ide field web.chat.wx.ide
field web.chat.wx.scan field web.chat.wx.scan args `gh_61ea404535e4`

View File

@ -83,17 +83,23 @@ func init() {
web.PP(LOGIN): {Actions: ice.MergeActions(ice.Actions{ web.PP(LOGIN): {Actions: ice.MergeActions(ice.Actions{
aaa.SESS: {Name: "sess code", Help: "会话", Hand: func(m *ice.Message, arg ...string) { aaa.SESS: {Name: "sess code", Help: "会话", Hand: func(m *ice.Message, arg ...string) {
m.Option(ice.MSG_USERZONE, WX) m.Option(ice.MSG_USERZONE, WX)
msg := m.Cmd(ACCESS, kit.Select(m.Option(APPID), kit.Split(kit.ParseURL(m.Option(ice.MSG_REFERER)).Path, nfs.PS), 0)) appid := kit.Select(m.Option(APPID), kit.Split(kit.ParseURL(m.Option(ice.MSG_REFERER)).Path, nfs.PS), 0)
msg = m.Cmd(web.SPIDE, WX, http.MethodGet, AUTH_CODE, "js_code", m.Option(cli.CODE), msg.AppendSimple(APPID, SECRET)) m.Cmd(ACCESS).Table(func(value ice.Maps) {
kit.If(value[APPID] == appid, func() { delete(value, aaa.USERNICK); m.Options(value) })
})
msg := m.Cmd(web.SPIDE, WX, http.MethodGet, AUTH_CODE, "js_code", m.Option(cli.CODE), m.OptionSimple(APPID, SECRET))
m.Warn(msg.Append(OPENID) == "", msg.Append("errmsg"))
m.Echo(aaa.SessCreate(msg, msg.Append(OPENID))) m.Echo(aaa.SessCreate(msg, msg.Append(OPENID)))
m.Sleep("3s")
}}, }},
aaa.USER: {Help: "用户", Hand: func(m *ice.Message, arg ...string) { aaa.USER: {Help: "用户", Hand: func(m *ice.Message, arg ...string) {
if m.Cmd(aaa.USER, m.Option(aaa.USERNAME, m.Option(ice.MSG_USERNAME))).Length() == 0 { if m.Cmd(aaa.USER, m.Option(aaa.USERNAME, m.Option(ice.MSG_USERNAME))).Length() == 0 {
m.Cmd(aaa.USER, mdb.CREATE, aaa.USERROLE, aaa.VOID, m.OptionSimple(aaa.USERNAME)) m.Cmd(aaa.USER, mdb.CREATE, aaa.USERROLE, aaa.VOID, m.OptionSimple(aaa.USERNAME))
} }
m.Cmd(aaa.USER, mdb.MODIFY, m.OptionSimple(aaa.USERNAME), aaa.USERNICK, m.Option("nickName"), aaa.USERZONE, WX, m.Cmd(aaa.USER, mdb.MODIFY, m.OptionSimple(aaa.USERNAME),
aaa.AVATAR, m.Option("avatarUrl"), aaa.GENDER, kit.Select("女", "男", m.Option(aaa.GENDER) == "1"), aaa.USERNICK, m.Option(aaa.USERNICK), aaa.AVATAR, m.Option(aaa.AVATAR),
m.OptionSimple(aaa.CITY, aaa.COUNTRY, aaa.LANGUAGE, aaa.PROVINCE), aaa.GENDER, kit.Select(kit.Select("", "女", m.Option(aaa.GENDER) == "2"), "男", m.Option(aaa.GENDER) == "1"),
m.OptionSimple(aaa.LANGUAGE, aaa.CITY, aaa.COUNTRY, aaa.PROVINCE), aaa.USERZONE, WX,
) )
}}, }},
SCENE: {Hand: func(m *ice.Message, arg ...string) { m.Cmdy(IDE, m.Option(SCENE)) }}, SCENE: {Hand: func(m *ice.Message, arg ...string) { m.Cmdy(IDE, m.Option(SCENE)) }},

View File

@ -49,7 +49,7 @@ func init() {
if info.Append(tcp.WIFI) != "" { if info.Append(tcp.WIFI) != "" {
wifi := m.Cmd(tcp.WIFI, info.Append(tcp.WIFI)) wifi := m.Cmd(tcp.WIFI, info.Append(tcp.WIFI))
ls := kit.Split(tcp.PublishLocalhost(m, u.Hostname()), nfs.PT) ls := kit.Split(tcp.PublishLocalhost(m, u.Hostname()), nfs.PT)
meta = path.Join("w", kit.Format("%x%x", kit.Int(ls[2]), kit.Int(ls[3])), scene, wifi.Append(tcp.SSID), wifi.Append(aaa.PASSWORD)) meta = path.Join("w", kit.Format("%x", kit.Int(ls[3])), scene, wifi.Append(tcp.SSID), wifi.Append(aaa.PASSWORD))
} else { } else {
meta = path.Join("h", tcp.PublishLocalhost(m, u.Host), scene) meta = path.Join("h", tcp.PublishLocalhost(m, u.Host), scene)
} }

View File

@ -11,7 +11,7 @@ const STUDIO = "studio"
func init() { func init() {
Index.MergeCommands(ice.Commands{ Index.MergeCommands(ice.Commands{
STUDIO: {Hand: func(m *ice.Message, arg ...string) { STUDIO: {Icon: "wxdev.png", Hand: func(m *ice.Message, arg ...string) {
m.Cmdy(ctx.COMMAND, kit.Split(kit.Select("web.chat.wx.access,web.chat.wx.ide,web.chat.wx.scan", mdb.Config(m, ctx.CMDS)))) m.Cmdy(ctx.COMMAND, kit.Split(kit.Select("web.chat.wx.access,web.chat.wx.ide,web.chat.wx.scan", mdb.Config(m, ctx.CMDS))))
ctx.DisplayStory(m, "") ctx.DisplayStory(m, "")
}}, }},

View File

@ -23,15 +23,18 @@ func init() {
"import", code.KEYWORD, "import", code.KEYWORD,
"class", code.FUNCTION, "class", code.FUNCTION,
"size", code.FUNCTION, "type", code.FUNCTION,
"open-type", code.FUNCTION,
"name", code.FUNCTION, "name", code.FUNCTION,
"range", code.FUNCTION, "size", code.FUNCTION,
"value", code.FUNCTION, "value", code.FUNCTION,
"placeholder", code.FUNCTION, "placeholder", code.FUNCTION,
"range", code.FUNCTION,
"is", code.FUNCTION, "is", code.FUNCTION,
"data", code.FUNCTION, "data", code.FUNCTION,
"wx:if", code.FUNCTION, "wx:if", code.FUNCTION,
"wx:elif", code.FUNCTION, "wx:elif", code.FUNCTION,
"wx:else", code.FUNCTION,
"wx:for", code.FUNCTION, "wx:for", code.FUNCTION,
"wx:for-item", code.FUNCTION, "wx:for-item", code.FUNCTION,
"wx:for-index", code.FUNCTION, "wx:for-index", code.FUNCTION,
@ -39,12 +42,17 @@ func init() {
"bindtap", code.FUNCTION, "bindtap", code.FUNCTION,
"bindinput", code.FUNCTION, "bindinput", code.FUNCTION,
"bindchange", code.FUNCTION, "bindchange", code.FUNCTION,
"onblur", code.FUNCTION,
"data-name", code.FUNCTION,
"data-item", code.FUNCTION,
), ),
)), ice.Actions{ )), ice.Actions{
code.TEMPLATE: {Hand: func(m *ice.Message, arg ...string) { code.TEMPLATE: {Hand: func(m *ice.Message, arg ...string) {
m.Echo(` m.Echo(`
<import src="../../app.wxml"/> <import src="../../app.wxml"/>
<view class="output"></view> <view class="output">
output
</view>
`) `)
}}, }},
})}, })},