Compare commits

..

No commits in common. "9c87e1a04091de3583c4edd0d5f524c7c3e838eb" and "a9c4b21b355ee00cc5241f39b745d2306579dfd1" have entirely different histories.

6 changed files with 76 additions and 84 deletions

14
argv.go
View File

@ -155,7 +155,7 @@ func DoAutoComplete(pb *prep.Auto) {
case "checkout": case "checkout":
pb.Autocomplete2("devel master user") pb.Autocomplete2("devel master user")
case "clean": case "clean":
pb.Autocomplete2("") fmt.Println("--force verify --repo")
case "commit": case "commit":
pb.Autocomplete2("--all") pb.Autocomplete2("--all")
case "config": case "config":
@ -171,11 +171,19 @@ func DoAutoComplete(pb *prep.Auto) {
case "merge": case "merge":
pb.Autocomplete2("devel master --all") pb.Autocomplete2("devel master --all")
case "normal": case "normal":
pb.Autocomplete2("on off") fmt.Println("on off")
case "pull": case "pull":
pb.Autocomplete2("--force check") fmt.Println("--force check")
case "patch": case "patch":
fmt.Println("check get list repos submit show") fmt.Println("check get list repos submit show")
case "user":
fmt.Println("--force")
case "devel":
fmt.Println("--force")
case "master":
fmt.Println("")
case "verify":
fmt.Println("user devel master")
case "tag": case "tag":
fmt.Println("list --delete clean") fmt.Println("list --delete clean")
default: default:

View File

@ -45,16 +45,7 @@ func doPatchSubmit() error {
if err != nil { if err != nil {
return err return err
} }
if pset.Patches == nil { _, _, err = pset.Patches.HttpPostVerbose(myServer(), "new")
log.Info("pset.Patches == nil")
return err
}
if pset.Patches.Len() == 0 {
log.Info("did not find any patches")
return nil
}
pset.PrintTable()
_, _, err = pset.HttpPost(myServer(), "new")
return err return err
} }
@ -73,7 +64,7 @@ func doPatch() error {
} }
if argv.Patch.Get != nil { if argv.Patch.Get != nil {
psets := forgepb.NewSets() psets := forgepb.NewPatchsets()
newpb, _, _ := psets.HttpPostVerbose(myServer(), "get") newpb, _, _ := psets.HttpPostVerbose(myServer(), "get")
newpb.PrintTable() newpb.PrintTable()
me.forge.Patchsets = newpb me.forge.Patchsets = newpb
@ -193,7 +184,7 @@ func dumpWorkRepos() bool {
// returns bad if patches can not be applied // returns bad if patches can not be applied
// logic is not great here but it was a first pass // logic is not great here but it was a first pass
func dumpPatchset(pset *forgepb.Set) bool { func dumpPatchset(pset *forgepb.Patchset) bool {
// don't even bother to continue if we already know it's broken // don't even bother to continue if we already know it's broken
if pset.State == "BROKEN" { if pset.State == "BROKEN" {
log.Printf("Patchset Name: %-24s Author: %s <%s> IS BAD\n", pset.Name, pset.GetGitAuthorName(), pset.GetGitAuthorEmail()) log.Printf("Patchset Name: %-24s Author: %s <%s> IS BAD\n", pset.Name, pset.GetGitAuthorName(), pset.GetGitAuthorEmail())

View File

@ -39,7 +39,7 @@ func doTag() error {
if argv.Tag.List != nil { if argv.Tag.List != nil {
repo := findCurrentPwdRepoOrDie() repo := findCurrentPwdRepoOrDie()
tagTablePB := makeTagTablePB(repo, repo.Tags) tagTablePB := makeTagTablePB(repo.Tags)
// tbox := win.Bottom.Box().SetProgName("TBOX") // tbox := win.Bottom.Box().SetProgName("TBOX")
// t.SetParent(tbox) // t.SetParent(tbox)
tagTablePB.MakeTable() tagTablePB.MakeTable()
@ -80,46 +80,40 @@ func doTag() error {
return nil return nil
} }
func makeTagTablePB(repo *gitpb.Repo, pb *gitpb.GitTags) *gitpb.GitTagsTable { func makeTagTablePB(pb *gitpb.GitTags) *gitpb.GitTagsTable {
t := pb.NewTable("tagList") t := pb.NewTable("tagList")
t.NewUuid() t.NewUuid()
col := t.AddHash() col := t.AddHash()
col.Width = 12 col.Width = 12
col = t.AddStringFunc("bashash", func(tag *gitpb.GitTag) string {
_, base := filepath.Split(tag.Refname)
cmd, err := repo.RunStrict([]string{"git", "log", "-1", base, "--format=%H"})
if err != nil {
return "err"
}
if len(cmd.Stdout) == 0 {
return ""
}
return cmd.Stdout[0]
})
col.Width = 12
col = t.AddTimeFunc("ctime", func(tag *gitpb.GitTag) time.Time {
// todo
return tag.Creatordate.AsTime()
})
col.Width = 4
col = t.AddTimeFunc("age", func(repo *gitpb.GitTag) time.Time {
// todo
return time.Now()
})
col.Width = 4
col = t.AddStringFunc("Ref Name", func(r *gitpb.GitTag) string { col = t.AddStringFunc("Ref Name", func(r *gitpb.GitTag) string {
_, ref := filepath.Split(r.GetRefname()) _, ref := filepath.Split(r.GetRefname())
return ref return ref
}) })
col.Width = 16 col.Width = 16
// col.Width = -1
col = t.AddTimeFunc("age", func(repo *gitpb.GitTag) time.Time {
// todo
return time.Now()
})
col.Width = 6
col = t.AddTimeFunc("ctime", func(tag *gitpb.GitTag) time.Time {
// todo
return tag.Creatordate.AsTime()
})
col.Width = 16
col = t.AddIntFunc("int", func(tag *gitpb.GitTag) int {
// todo
return 3
})
col.Width = 4
col = t.AddSubject() col = t.AddSubject()
col.Width = -1 col.Width = 16
return t return t
} }

61
doc.go
View File

@ -1,41 +1,40 @@
/* /*
forge -- a tool to manage lots of git repos. forge includes a GUI and TUI. forge -- a tool to manage lots of git repos. forge includes a GUI and TUI.
forge only executes the 'git' command. Everything it does, you can run by hand with 'git'. forge only executes the 'git' command. Everything it does, you can run by hand with 'git'.
Options: Options:
--debugger open the debugger window
--debugger open the debugger window --logger open the log.* control window
--logger open the log.* control window --gui GUI select the plugin (andlabs,gocui,etc)
--gui GUI select the plugin (andlabs,gocui,etc) --gui-verbose enable all logging
--gui-verbose enable all logging --bash generate bash completion
--bash generate bash completion --bash generate bash completion
--bash generate bash completion --connect CONNECT forge url
--connect CONNECT forge url --all git commit --all
--all git commit --all --build BUILD build a repo
--build BUILD build a repo --install INSTALL install a repo
--install INSTALL install a repo --forge-rebuild download and rebuild forge
--forge-rebuild download and rebuild forge --force try to strong arm things
--force try to strong arm things --verbose show more output
--verbose show more output --help, -h display this help and exit
--help, -h display this help and exit --version display version and exit
--version display version and exit
Commands: Commands:
help New to forge? This is for you.'
help New to forge? This is for you.' checkout switch branches using 'git checkout'
checkout switch branches using 'git checkout' clean start over at the beginning
clean start over at the beginning commit 'git commit' but errors out if on wrong branch
commit 'git commit' but errors out if on wrong branch config show your .config/forge/ settings
config show your .config/forge/ settings dirty show dirty git repos
dirty show dirty git repos fetch run 'git fetch master'
fetch run 'git fetch master' gui open the gui
gui open the gui list print a table of the current repos
list print a table of the current repos merge merge branches
merge merge branches normal set every repo to the default state for software development
normal set every repo to the default state for software development patch make patchsets
patch make patchsets pull run 'git pull'
pull run 'git pull' tag manage git tags
tag manage git tags
*/ */
package main package main

View File

@ -38,7 +38,7 @@ type stdPatchsetTableWin struct {
sync.Mutex sync.Mutex
win *gadgets.GenericWindow // the machines gui window win *gadgets.GenericWindow // the machines gui window
box *gui.Node // the machines gui parent box widget box *gui.Node // the machines gui parent box widget
TB *forgepb.SetsTable // the gui table buffer TB *forgepb.PatchsetsTable // the gui table buffer
update bool // if the window should be updated update bool // if the window should be updated
} }
@ -54,7 +54,7 @@ func (w *stdPatchsetTableWin) Toggle() {
*/ */
/* /*
etimef := func(e *forgepb.Set) string { etimef := func(e *forgepb.Patchset) string {
etime := e.Etime.AsTime() etime := e.Etime.AsTime()
s := etime.Format("2006/01/02 15:04") s := etime.Format("2006/01/02 15:04")
if strings.HasPrefix(s, "1970/") { if strings.HasPrefix(s, "1970/") {
@ -67,14 +67,14 @@ func (w *stdPatchsetTableWin) Toggle() {
*/ */
/* /*
ctimef := func(p *forgepb.Set) string { ctimef := func(p *forgepb.Patchset) string {
ctime := p.Ctime.AsTime() ctime := p.Ctime.AsTime()
return ctime.Format("2006/01/02 15:04") return ctime.Format("2006/01/02 15:04")
} }
} }
*/ */
func setPatchsetState(p *forgepb.Set) { func setPatchsetState(p *forgepb.Patchset) {
var bad bool var bad bool
var good bool var good bool
var done bool = true var done bool = true
@ -209,7 +209,7 @@ func setNewCommitHash(patch *forgepb.Patch) bool {
} }
/* /*
func setNewCommitHashLoop(p *forgepb.Set) bool { func setNewCommitHashLoop(p *forgepb.Patchset) bool {
var done bool = true var done bool = true
for patch := range p.Patches.IterAll() { for patch := range p.Patches.IterAll() {
setNewCommitHashLoop(patch) setNewCommitHashLoop(patch)
@ -219,7 +219,7 @@ func setNewCommitHashLoop(p *forgepb.Set) bool {
} }
*/ */
func AddAllPatches(notdone *forgepb.Patches, pset *forgepb.Set, full bool) { func AddAllPatches(notdone *forgepb.Patches, pset *forgepb.Patchset, full bool) {
for patch := range pset.Patches.IterAll() { for patch := range pset.Patches.IterAll() {
comment := cleanSubject(patch.Comment) comment := cleanSubject(patch.Comment)
@ -233,7 +233,7 @@ func AddAllPatches(notdone *forgepb.Patches, pset *forgepb.Set, full bool) {
} }
} }
func AddNotDonePatches(notdone *forgepb.Patches, pset *forgepb.Set, full bool) { func AddNotDonePatches(notdone *forgepb.Patches, pset *forgepb.Patchset, full bool) {
for patch := range pset.Patches.IterAll() { for patch := range pset.Patches.IterAll() {
comment := cleanSubject(patch.Comment) comment := cleanSubject(patch.Comment)

View File

@ -21,8 +21,8 @@ type repoPatchWindow struct {
shelf *gui.Node // the first box in the stack, set as horizontal shelf *gui.Node // the first box in the stack, set as horizontal
grid *gui.Node // the list of available patches grid *gui.Node // the list of available patches
// summary *patchSummary // summary of current patches // summary *patchSummary // summary of current patches
setgrid *gui.Node // the list of each patchset setgrid *gui.Node // the list of each patchset
pset *forgepb.Set // the patchset in question pset *forgepb.Patchset // the patchset in question
} }
// todo: autogenerate these or make them standared 'gui' package functions // todo: autogenerate these or make them standared 'gui' package functions
@ -109,7 +109,7 @@ func makeRepoPatchWindow(repo *gitpb.Repo, fset []*forgepb.Patch) *repoPatchWind
return pw return pw
} }
func (r *repoPatchWindow) addPatchset(grid *gui.Node, pset *forgepb.Set) { func (r *repoPatchWindow) addPatchset(grid *gui.Node, pset *forgepb.Patchset) {
repomap := make(map[*gitpb.Repo][]*forgepb.Patch) repomap := make(map[*gitpb.Repo][]*forgepb.Patch)
repohash := make(map[*gitpb.Repo]string) repohash := make(map[*gitpb.Repo]string)