summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Makefile2
-rw-r--r--argv.go55
-rw-r--r--doGui.go2
-rw-r--r--main.go5
-rw-r--r--windowApply.go61
-rw-r--r--windowMain.go (renamed from window.go)0
-rw-r--r--windowPatches.go3
-rw-r--r--windowRepos.go24
8 files changed, 107 insertions, 45 deletions
diff --git a/Makefile b/Makefile
index 7148a01..e8b9505 100644
--- a/Makefile
+++ b/Makefile
@@ -32,7 +32,7 @@ goimports:
@# // gofmt -w -r '"go.wit.com/gui/gadgets" -> "go.wit.com/lib/gadgets"' *.go
gocui: install
- forge --gui gocui --do-gui
+ forge --gui gocui --do-gui >/tmp/forge.log 2>&1
redomod-all:
forge --do-RedoGoMod
diff --git a/argv.go b/argv.go
index ba8f334..d4f8fa6 100644
--- a/argv.go
+++ b/argv.go
@@ -7,31 +7,32 @@ package main
var argv args
type args struct {
- Config bool `arg:"--config" help:"work from your .config/forge/ configuration"`
- FindAll bool `arg:"--find-all" help:"select every repo"`
- FindReadOnly bool `arg:"--find-readonly" help:"include read-only repos"`
- FindMine bool `arg:"--find-mine" help:"download private and writeable repos"`
- FindFavorites bool `arg:"--find-favorites" help:"download repos marked as favorites"`
- FindPrivate bool `arg:"--find-private" help:"list private repos in .config/forge/"`
- DoList bool `arg:"--do-list" help:"list found repos"`
- DoScan bool `arg:"--do-scan" help:"rescan your repos"`
- DoClone bool `arg:"--do-clone" help:"go-clone things you are missing"`
- DoForce bool `arg:"--do-force" help:"force redo go-clone"`
- DoGitPull bool `arg:"--do-git-pull" help:"run 'git pull' on all your repos"`
- DoGitReset bool `arg:"--do-git-reset" help:"run 'git reset --hard' on all read-only repos"`
- DoBuild bool `arg:"--do-build" default:"true" help:"also try to build it"`
- DoInstall bool `arg:"--do-install" help:"try to install every binary package"`
- DoRedoGoMod bool `arg:"--do-RedoGoMod" help:"remake all the go.sum and go.mod files"`
- DoPatchSet bool `arg:"--do-patches" help:"make patch set"`
- ListPatchSet bool `arg:"--list-patches" help:"make patch set"`
- DoGui bool `arg:"--do-gui" help:"test the gui"`
- DryRun bool `arg:"--dry-run" help:"show what would be run"`
- Fix bool `arg:"--fix" help:"fix config, save config & exit"`
- URL string `arg:"--url" default:"http://go.wit.com/" help:"base url"`
- Delete string `arg:"--delete" help:"delete this repo"`
- Dirty bool `arg:"--dirty" help:"git CheckDirty() on every repo"`
- User bool `arg:"--user" help:"git checkout user"`
- Master bool `arg:"--master" help:"git checkout master"`
+ Config bool `arg:"--config" help:"work from your .config/forge/ configuration"`
+ FindAll bool `arg:"--find-all" help:"select every repo"`
+ FindReadOnly bool `arg:"--find-readonly" help:"include read-only repos"`
+ FindMine bool `arg:"--find-mine" help:"download private and writeable repos"`
+ FindFavorites bool `arg:"--find-favorites" help:"download repos marked as favorites"`
+ FindPrivate bool `arg:"--find-private" help:"list private repos in .config/forge/"`
+ DoList bool `arg:"--do-list" help:"list found repos"`
+ DoScan bool `arg:"--do-scan" help:"rescan your repos"`
+ DoClone bool `arg:"--do-clone" help:"go-clone things you are missing"`
+ DoForce bool `arg:"--do-force" help:"force redo go-clone"`
+ DoGitPull bool `arg:"--do-git-pull" help:"run 'git pull' on all your repos"`
+ DoGitReset bool `arg:"--do-git-reset" help:"run 'git reset --hard' on all read-only repos"`
+ DoBuild bool `arg:"--do-build" default:"true" help:"also try to build it"`
+ DoInstall bool `arg:"--do-install" help:"try to install every binary package"`
+ DoRedoGoMod bool `arg:"--do-RedoGoMod" help:"remake all the go.sum and go.mod files"`
+ DoPatchSet bool `arg:"--do-patches" help:"make patch set"`
+ ListPatchSet bool `arg:"--list-patches" help:"make patch set"`
+ DoGui bool `arg:"--do-gui" help:"test the gui"`
+ DryRun bool `arg:"--dry-run" help:"show what would be run"`
+ Fix bool `arg:"--fix" help:"fix config, save config & exit"`
+ URL string `arg:"--url" default:"http://go.wit.com/" help:"base url"`
+ Delete string `arg:"--delete" help:"delete this repo"`
+ Dirty bool `arg:"--dirty" help:"git CheckDirty() on every repo"`
+ User bool `arg:"--user" help:"git checkout user"`
+ Master bool `arg:"--master" help:"git checkout master"`
+ Map []string `arg:"--map" help:"map a new repo"`
}
func (args) Version() string {
@@ -50,5 +51,7 @@ Examples:
forge --git-pull # run 'git pull' in every repo
forge --build --dry-run # build every binary package (but just show what would run)
forge --mine --clone # clone every package you have in your config file
-`
+ `
}
+
+// forge --map lib/foo https://github.com/me/myfoo # map go.wit.com/lib/foo -> github.com/me/myfoo
diff --git a/doGui.go b/doGui.go
index 3a07511..b89a5ae 100644
--- a/doGui.go
+++ b/doGui.go
@@ -12,7 +12,7 @@ func doGui() {
me.myGui = gui.New()
me.myGui.Default()
- me.mainWindow = gadgets.RawBasicWindow("Forge: use this to submit patches")
+ me.mainWindow = gadgets.RawBasicWindow("Forge: (this doesn't work yet)")
me.mainWindow.Make()
me.mainWindow.Show()
me.mainbox = me.mainWindow.Box()
diff --git a/main.go b/main.go
index 2bf1e9c..512f92c 100644
--- a/main.go
+++ b/main.go
@@ -54,6 +54,11 @@ func main() {
okExit("")
}
+ if len(argv.Map) != 0 {
+ log.Info("need to map here", argv.Map)
+ okExit("")
+ }
+
if argv.Delete != "" {
me.forge.DeleteByGoPath(argv.Delete)
me.forge.SetConfigSave(true)
diff --git a/windowApply.go b/windowApply.go
new file mode 100644
index 0000000..11bb4fa
--- /dev/null
+++ b/windowApply.go
@@ -0,0 +1,61 @@
+package main
+
+import (
+ "sync"
+
+ "go.wit.com/lib/gadgets"
+ "go.wit.com/log"
+
+ "go.wit.com/gui"
+)
+
+// Shout out to "Go Generics 101" by Tapir Liu. Buy this book!
+
+type Lockable[T any] struct {
+ mu sync.Mutex
+ data T
+}
+
+func (l *Lockable[T]) Do(f func(*T)) {
+}
+
+func (l *Lockable[T]) Hide() {
+ log.Info("testing:", l)
+}
+
+type applyWindow struct {
+ win *gadgets.BasicWindow
+ box *gui.Node
+
+ // the top box of the repolist window
+ topbox *gui.Node
+}
+
+type C3 = interface {
+ Show()
+ Hide()
+ Hidden() bool
+ Enable()
+ Disable()
+ ~*gadgets.BasicWindow | ~*gui.Node
+}
+
+func (r applyWindow) Hidden() bool {
+ return r.win.Hidden()
+}
+
+func (r applyWindow) Show() {
+ r.win.Show()
+}
+
+func (r applyWindow) Hide() {
+ r.win.Hide()
+}
+
+func (r applyWindow) Disable() {
+ r.box.Disable()
+}
+
+func (r applyWindow) Enable() {
+ r.box.Enable()
+}
diff --git a/window.go b/windowMain.go
index 5f7a71b..5f7a71b 100644
--- a/window.go
+++ b/windowMain.go
diff --git a/windowPatches.go b/windowPatches.go
index bd14797..f4cb6f6 100644
--- a/windowPatches.go
+++ b/windowPatches.go
@@ -173,6 +173,9 @@ func submitPatchesBox(box *gui.Node) *patchSummary {
me.repos.View.MakePatchset(patchdir)
*/
})
+ s.grid.NewButton("Show Patchsets", func() {
+ listPatches()
+ })
s.grid.NewButton("Show Repos", func() {
s.Update()
if me.repos.Hidden() {
diff --git a/windowRepos.go b/windowRepos.go
index 736ba15..b2a6f4d 100644
--- a/windowRepos.go
+++ b/windowRepos.go
@@ -74,30 +74,20 @@ func makeRepoView() *repoWindow {
func (r *repoWindow) repoMenu() *gui.Node {
// reposbox.SetExpand(false)
- group1 := r.box.NewGroup("Run on all repos:")
+ group1 := r.box.NewGroup("Filter:")
hbox := group1.Box()
// hbox.Horizontal()
hbox.Vertical()
- box2 := hbox.Box().Vertical()
+ box2 := hbox.Box().Horizontal()
/*
- box2.NewButton("merge all user to devel", func() {
- r.Disable()
- if !r.mergeAllUserToDevel() {
- return
- }
- r.Enable()
- })
+ */
- box2.NewButton("merge all devel to main", func() {
- r.Disable()
- if !r.mergeAllDevelToMain() {
- return
- }
- r.Enable()
- })
- */
+ dirty := box2.NewCheckbox("dirty")
+ dirty.Custom = func() {
+ log.Info("filter dirty =", dirty.Checked())
+ }
box2.NewButton("merge it all", func() {
r.Disable()