diff --git a/misc/git/config.go b/misc/git/config.go index cc79216d..e19b482d 100644 --- a/misc/git/config.go +++ b/misc/git/config.go @@ -14,10 +14,24 @@ const CONFIG = "config" func init() { Index.Merge(&ice.Context{ Configs: map[string]*ice.Config{ - CONFIG: {Name: CONFIG, Help: "配置键", Value: kit.Data(kit.MDB_SHORT, kit.MDB_NAME)}, + CONFIG: {Name: CONFIG, Help: "配置键", Value: kit.Data(kit.MDB_SHORT, kit.MDB_NAME, "init", kit.Dict( + "alias", kit.Dict("s", "status", "b", "branch"), + "credential", kit.Dict("helper", "store"), + "core", kit.Dict("quotepath", "false"), + "push", kit.Dict("default", "simple"), + "color", kit.Dict("ui", "always"), + ))}, }, Commands: map[string]*ice.Command{ CONFIG: {Name: "server name auto create", Help: "配置键", Action: map[string]*ice.Action{ + "init": {Name: "create name value", Help: "添加", Hand: func(m *ice.Message, arg ...string) { + kit.Fetch(m.Confv(GIT, kit.Keym("config")), func(conf string, value interface{}) { + kit.Fetch(value, func(key string, value string) { + m.Cmd(cli.SYSTEM, "bin/git", "config", "--global", conf+"."+key, value) + }) + }) + }}, + mdb.CREATE: {Name: "create name value", Help: "添加", Hand: func(m *ice.Message, arg ...string) { m.Cmd(cli.SYSTEM, GIT, CONFIG, "--global", m.Option(kit.MDB_NAME), m.Option(kit.MDB_VALUE)) m.Cmd(mdb.DELETE, m.Prefix(CONFIG), "", kit.MDB_HASH, kit.MDB_NAME, m.Option(kit.MDB_NAME)) diff --git a/misc/git/git.go b/misc/git/git.go index 74f8bcde..a7a385e9 100644 --- a/misc/git/git.go +++ b/misc/git/git.go @@ -5,7 +5,6 @@ import ( ice "github.com/shylinux/icebergs" "github.com/shylinux/icebergs/base/cli" - "github.com/shylinux/icebergs/base/nfs" "github.com/shylinux/icebergs/base/web" "github.com/shylinux/icebergs/core/code" kit "github.com/shylinux/toolkits" @@ -16,49 +15,25 @@ const GIT = "git" var Index = &ice.Context{Name: GIT, Help: "代码库", Configs: map[string]*ice.Config{ GIT: {Name: GIT, Help: "代码库", Value: kit.Data( - kit.SSH_SOURCE, "https://mirrors.edge.kernel.org/pub/software/scm/git/git-1.8.3.1.tar.gz", CONFIG, kit.Dict( - "alias", kit.Dict("s", "status", "b", "branch"), - "credential", kit.Dict("helper", "store"), - "core", kit.Dict("quotepath", "false"), - "push", kit.Dict("default", "simple"), - "color", kit.Dict("ui", "always"), - ), + cli.SOURCE, "https://mirrors.edge.kernel.org/pub/software/scm/git/git-1.8.3.1.tar.gz", )}, }, Commands: map[string]*ice.Command{ - ice.CTX_INIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { - m.Load() - - _repos_insert(m, path.Base(kit.Pwd()), kit.Pwd()) - m.Cmd(nfs.DIR, kit.SSH_USR, "name,path").Table(func(index int, value map[string]string, head []string) { - _repos_insert(m, value[kit.MDB_NAME], value[kit.MDB_PATH]) - }) - }}, - ice.CTX_EXIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { - m.Save(CONFIG) - }}, + ice.CTX_INIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { m.Load() }}, + ice.CTX_EXIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { m.Save() }}, GIT: {Name: "git port path auto start build download", Help: "源代码", Action: map[string]*ice.Action{ web.DOWNLOAD: {Name: "download", Help: "下载", Hand: func(m *ice.Message, arg ...string) { - m.Cmdy(code.INSTALL, web.DOWNLOAD, m.Conf(GIT, kit.META_SOURCE)) + m.Cmdy(code.INSTALL, web.DOWNLOAD, m.Conf(GIT, kit.Keym(cli.SOURCE))) }}, cli.BUILD: {Name: "build", Help: "构建", Hand: func(m *ice.Message, arg ...string) { - m.Cmdy(code.INSTALL, cli.BUILD, m.Conf(GIT, kit.META_SOURCE)) + m.Cmdy(code.INSTALL, cli.BUILD, m.Conf(GIT, kit.Keym(cli.SOURCE))) }}, cli.START: {Name: "start", Help: "启动", Hand: func(m *ice.Message, arg ...string) { - m.Optionv(code.PREPARE, func(p string) []string { - m.Option(cli.CMD_DIR, p) - kit.Fetch(m.Confv(GIT, kit.Keym("config")), func(conf string, value interface{}) { - kit.Fetch(value, func(key string, value string) { - m.Cmd(cli.SYSTEM, "bin/git", "config", "--global", conf+"."+key, value) - }) - }) - return []string{} - }) - m.Cmdy(code.INSTALL, cli.START, m.Conf(GIT, kit.META_SOURCE), "bin/git") + m.Cmdy(code.INSTALL, cli.START, m.Conf(GIT, kit.Keym(cli.SOURCE)), "bin/git") }}, }, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { - m.Cmdy(code.INSTALL, path.Base(m.Conf(GIT, kit.META_SOURCE)), arg) + m.Cmdy(code.INSTALL, path.Base(m.Conf(GIT, kit.Keym(cli.SOURCE))), arg) }}, }, } diff --git a/misc/git/repos.go b/misc/git/repos.go index f1f99ff3..715f34cc 100644 --- a/misc/git/repos.go +++ b/misc/git/repos.go @@ -1,7 +1,6 @@ package git import ( - "fmt" "os" "path" "strings" @@ -37,8 +36,7 @@ const ( MASTER = "master" CLONE = "clone" - - INIT = "init" + INIT = "init" ) const REPOS = "repos" @@ -46,11 +44,18 @@ func init() { Index.Merge(&ice.Context{ Configs: map[string]*ice.Config{ REPOS: {Name: REPOS, Help: "代码库", Value: kit.Data( - kit.MDB_SHORT, kit.MDB_NAME, kit.SSH_REPOS, "https://github.com/shylinux", + kit.MDB_SHORT, kit.MDB_NAME, kit.MDB_FIELD, "time,name,branch,commit,remote", + kit.SSH_REPOS, "https://github.com/shylinux", )}, }, Commands: map[string]*ice.Command{ - REPOS: {Name: "repos name path auto create proxy", Help: "代码库", Action: map[string]*ice.Action{ + ice.CTX_INIT: {Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { + _repos_insert(m, path.Base(kit.Pwd()), kit.Pwd()) + m.Cmd(nfs.DIR, kit.SSH_USR, "name,path").Table(func(index int, value map[string]string, head []string) { + _repos_insert(m, value[kit.MDB_NAME], value[kit.MDB_PATH]) + }) + }}, + REPOS: {Name: "repos name path auto create", Help: "代码库", Action: map[string]*ice.Action{ mdb.CREATE: {Name: "create repos branch name path", Help: "添加", Hand: func(m *ice.Message, arg ...string) { m.Option(kit.MDB_NAME, kit.Select(strings.TrimSuffix(path.Base(m.Option(kit.SSH_REPOS)), ".git"), m.Option(kit.MDB_NAME))) m.Option(kit.MDB_PATH, kit.Select(path.Join(kit.SSH_USR, m.Option(kit.MDB_NAME)), m.Option(kit.MDB_PATH))) @@ -75,7 +80,7 @@ func init() { }}, }, Hand: func(m *ice.Message, c *ice.Context, cmd string, arg ...string) { if len(arg) == 0 { // 仓库列表 - m.Fields(len(arg) == 0, "time,name,branch,commit,remote") + m.Fields(len(arg) == 0, m.Conf(REPOS, kit.META_FIELD)) m.Cmdy(mdb.SELECT, m.Prefix(REPOS), "", mdb.HASH) m.Sort(kit.MDB_NAME) return @@ -83,11 +88,6 @@ func init() { m.Option(nfs.DIR_ROOT, _repos_path(arg[0])) m.Cmdy(nfs.CAT, kit.Select("./", arg, 1), "time,line,path") - - m.Option(cli.CMD_DIR, _repos_path(arg[0])) - p := strings.TrimPrefix(strings.TrimPrefix(m.Cmdx(cli.SYSTEM, GIT, REMOTE, "get-url", ORIGIN), "http://"), "https://") - pp := kit.MergeURL2(m.Option(ice.MSG_USERWEB), fmt.Sprintf("/code/git/%s", strings.TrimSpace(p))) - m.EchoScript(fmt.Sprintf("git clone %s", pp)) }}, }, })