diff --git a/base/ctx/command.go b/base/ctx/command.go index 7ec6ad8b..43d12229 100644 --- a/base/ctx/command.go +++ b/base/ctx/command.go @@ -150,6 +150,8 @@ func FileURI(dir string) string { dir = strings.TrimPrefix(dir, ice.Info.Make.Path) } else if strings.HasPrefix(dir, kit.Path("")+nfs.PS) { dir = strings.TrimPrefix(dir, kit.Path("")+nfs.PS) + } else if strings.HasPrefix(dir, ".ish/pluged/") { + dir = strings.TrimPrefix(dir, ".ish/pluged/") } return path.Join(nfs.PS, ice.REQUIRE, dir) } diff --git a/base/web/dream.go b/base/web/dream.go index 06638b4b..e9763ebb 100644 --- a/base/web/dream.go +++ b/base/web/dream.go @@ -149,6 +149,8 @@ func init() { m.Cmd(nfs.DIR, ice.USR_LOCAL_WORK, kit.Dict(nfs.DIR_TYPE, nfs.TYPE_BOTH), func(value ice.Maps) { m.Cmdy(nfs.DIR, path.Join(value[nfs.PATH], ice.BIN), "path,size,time", kit.Dict(nfs.DIR_TYPE, nfs.TYPE_BIN)) }) + m.RenameAppend(nfs.PATH, arg[0]) + mdb.HashInputs(m, arg) default: gdb.Event(m, DREAM_INPUTS, arg) } diff --git a/base/web/html/html.go b/base/web/html/html.go index 0a14001a..377bf8da 100644 --- a/base/web/html/html.go +++ b/base/web/html/html.go @@ -16,6 +16,7 @@ const ( const ( FLOAT = "float" OUTPUT = "output" + CHROME = "chrome" TEXT_PLAIN = "text/plain" ) diff --git a/base/web/space.go b/base/web/space.go index 05f5cfd0..3b2b3327 100644 --- a/base/web/space.go +++ b/base/web/space.go @@ -18,6 +18,7 @@ import ( "shylinux.com/x/icebergs/base/nfs" "shylinux.com/x/icebergs/base/ssh" "shylinux.com/x/icebergs/base/tcp" + "shylinux.com/x/icebergs/base/web/html" "shylinux.com/x/icebergs/misc/websocket" kit "shylinux.com/x/toolkits" ) @@ -50,11 +51,16 @@ func _space_fork(m *ice.Message) { addr := kit.Select(m.R.RemoteAddr, m.R.Header.Get(ice.MSG_USERADDR)) name := kit.ReplaceAll(kit.Select(addr, m.Option(mdb.NAME)), "[", "_", "]", "_", nfs.DF, "_", nfs.PT, "_") text := kit.Select(addr, m.Option(mdb.TEXT)) - if kit.IsIn(m.Option(mdb.TYPE), CHROME) && m.Option(mdb.NAME) != CHROME || !(ice.Info.Localhost && tcp.IsLocalHost(m, m.R.RemoteAddr) || + text = strings.ReplaceAll(text, "%2F", "/") + if kit.IsIn(m.Option(mdb.TYPE), PORTAL) && m.Option(mdb.NAME) != html.CHROME || !(ice.Info.Localhost && tcp.IsLocalHost(m, m.R.RemoteAddr) || m.Option(TOKEN) != "" && m.Cmdv(TOKEN, m.Option(TOKEN), mdb.TIME) > m.Time()) || mdb.HashSelect(m.Spawn(), name).Length() > 0 { name, text = kit.Hashs(name), kit.Select(addr, m.Option(mdb.NAME), m.Option(mdb.TEXT)) } - + if m.Option(mdb.TYPE) == WORKER { + if p := nfs.USR_LOCAL_WORK + m.Option(mdb.NAME); nfs.Exists(m, p) { + text = p + } + } args := kit.Simple(mdb.TYPE, kit.Select(WORKER, m.Option(mdb.TYPE)), mdb.NAME, name, mdb.TEXT, text, m.OptionSimple(cli.DAEMON, ice.MSG_USERUA), m.OptionSimple(nfs.MODULE, nfs.VERSION)) if c, e := websocket.Upgrade(m.W, m.R); !m.Warn(e) { gdb.Go(m, func() { @@ -63,7 +69,7 @@ func _space_fork(m *ice.Message) { case SERVER: case WORKER: defer gdb.EventDeferEvent(m, DREAM_OPEN, args)(DREAM_CLOSE, args) - case CHROME: + case PORTAL: m.Go(func() { m.Cmd(SPACE, name, cli.PWD, name) }) case LOGIN: if m.Option(ice.MSG_SESSID) != "" && m.Option(ice.MSG_USERNAME) != "" { @@ -155,10 +161,10 @@ func _space_send(m *ice.Message, name string, arg ...string) (h string) { } const ( - CHROME = "chrome" - MASTER = "master" - SERVER = "server" + PORTAL = "portal" WORKER = "worker" + SERVER = "server" + MASTER = "master" REDIAL = "redial" ) @@ -195,6 +201,7 @@ func init() { mdb.REMOVE: {Hand: func(m *ice.Message, arg ...string) { defer mdb.HashModifyDeferRemove(m, m.OptionSimple(mdb.NAME), mdb.STATUS, cli.STOP)() m.Cmd("", m.Option(mdb.NAME), ice.EXIT) + m.Sleep("1s") }}, mdb.SEARCH: {Hand: func(m *ice.Message, arg ...string) { if mdb.IsSearchPreview(m, arg) { @@ -227,22 +234,18 @@ func init() { defer m.StatusTimeCount() m.Option(ice.MSG_USERWEB, tcp.PublishLocalhost(m, m.Option(ice.MSG_USERWEB))) mdb.HashSelect(m.Spawn(), arg...).Sort("").Table(func(index int, value ice.Maps, field []string) { - if kit.IsIn(value[mdb.TYPE], CHROME, "send") { - // return - } if m.Push("", value, kit.Split(mdb.Config(m, mdb.FIELD))); len(arg) > 0 && arg[0] != "" { m.Push(mdb.STATUS, value[mdb.STATUS]) } - if kit.IsIn(value[mdb.TYPE], SERVER, WORKER) { + if kit.IsIn(value[mdb.TYPE], WORKER, SERVER) { m.Push(mdb.LINK, m.MergePod(value[mdb.NAME])) - } else if value[mdb.TYPE] == CHROME && value[mdb.NAME] != "chrome" { + } else if value[mdb.TYPE] == PORTAL && value[mdb.NAME] != html.CHROME { m.Push(mdb.LINK, MergeURL2(m, value[mdb.TEXT])) } else { m.Push(mdb.LINK, "") } m.PushButton(kit.Select(OPEN, LOGIN, value[mdb.TYPE] == LOGIN), mdb.REMOVE) }) - kit.If(!m.IsCliUA(), func() { m.Cmdy("web.code.publish", "contexts", ice.APP) }) kit.If(len(arg) == 1, func() { m.EchoIFrame(m.MergePod(arg[0])) }) } else { _space_send(m, arg[0], kit.Simple(kit.Split(arg[1]), arg[2:])...) diff --git a/core/chat/macos/applications.go b/core/chat/macos/applications.go index fc115d27..84377806 100644 --- a/core/chat/macos/applications.go +++ b/core/chat/macos/applications.go @@ -21,7 +21,10 @@ func init() { ice.CTX_INIT: {Hand: func(m *ice.Message, arg ...string) { FinderAppend(m, "Applications", m.PrefixKey()) m.Travel(func(p *ice.Context, c *ice.Context, key string, cmd *ice.Command) { - kit.If(cmd.Icon, func() { AppInstall(m, cmd.Icon, m.PrefixKey()) }) + kit.If(cmd.Icon, func() { + m.Debug("what %v", cmd.Icon) + AppInstall(m, cmd.Icon, m.PrefixKey()) + }) }) Notify(m, cli.RUNTIME, "系统启动成功", ctx.INDEX, cli.RUNTIME) }}, diff --git a/core/code/vimer.go b/core/code/vimer.go index 214b584a..2560c25a 100644 --- a/core/code/vimer.go +++ b/core/code/vimer.go @@ -160,7 +160,6 @@ func init() { nfs.REPOS: {Help: "仓库"}, web.SPACE: {Help: "空间"}, web.DREAM: {Help: "空间"}, FAVOR: {Help: "收藏"}, cli.OPENS: {Hand: func(m *ice.Message, arg ...string) { cli.Opens(m, arg...) }}, "listTags": {Help: "生成索引", Hand: func(m *ice.Message, arg ...string) { m.Cmd("web.code.vim.tags", nfs.LOAD) }}, - TEMPLATE: {Hand: func(m *ice.Message, arg ...string) { m.Cmdy(TEMPLATE, kit.Ext(m.Option(mdb.FILE)), m.Option(nfs.FILE), m.Option(nfs.PATH)) }}, @@ -168,6 +167,11 @@ func init() { m.Cmdy(COMPLETE, kit.Ext(m.Option(mdb.FILE)), m.Option(nfs.FILE), m.Option(nfs.PATH)) }}, COMPILE: {Help: "编译", Hand: func(m *ice.Message, arg ...string) { + if nfs.ExistsFile(m, path.Join(m.Option(nfs.PATH), "Makefile")) { + web.PushStream(m) + m.Cmdy(cli.SYSTEM, cli.MAKE, kit.Dict(cli.CMD_DIR, m.Option(nfs.PATH))) + return + } const app, _app = "usr/publish/Contexts.app", "Contents/MacOS/Contexts" isWebview := func() bool { return strings.HasSuffix(os.Args[0], _app) } cmds := []string{COMPILE, ice.SRC_MAIN_GO, ice.BIN_ICE_BIN} diff --git a/misc/git/search.go b/misc/git/search.go index cc82fb35..dae08850 100644 --- a/misc/git/search.go +++ b/misc/git/search.go @@ -64,6 +64,7 @@ func init() { kit.For([]string{HTML_URL, WEBSITE}, func(key string) { kit.If(kit.Format(value[key]), func() { button = append(button, key) }) }) m.PushButton(button...) }) + // m.Echo("%v", kit.Formats(res)) m.RenameAppend(CLONE_URL, REPOS).StatusTimeCount().Display("").Action(ORIGIN) }}, }) diff --git a/misc/git/service.go b/misc/git/service.go index fc6d6971..20ad9828 100644 --- a/misc/git/service.go +++ b/misc/git/service.go @@ -178,7 +178,14 @@ func init() { }}, code.INNER: {Hand: func(m *ice.Message, arg ...string) { _repos_inner(m, _service_path, arg...) }}, web.DREAM_INPUTS: {Hand: func(m *ice.Message, arg ...string) { - kit.If(arg[0] == REPOS, func() { mdb.HashSelect(m).Sort(REPOS).Cut("repos,branch,commit,time") }) + kit.If(arg[0] == REPOS, func() { + mdb.HashSelect(m).Sort(REPOS).Cut("repos,version,time") + m.Cmd(mdb.SEARCH, nfs.REPOS).Table(func(value ice.Maps) { + m.Push(nfs.REPOS, value["html_url"]) + m.Push(nfs.VERSION, "") + m.Push(mdb.TIME, value["updated_at"]) + }) + }) }}, }, gdb.EventsAction(web.DREAM_INPUTS), mdb.HashAction(mdb.SHORT, REPOS, mdb.FIELD, "time,repos,branch,version,comment"), mdb.ClearOnExitHashAction()), Hand: func(m *ice.Message, arg ...string) { if len(arg) == 0 {