summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--globalDisplayOptions.go45
-rw-r--r--hideFunction.go89
-rw-r--r--main.go2
3 files changed, 100 insertions, 36 deletions
diff --git a/globalDisplayOptions.go b/globalDisplayOptions.go
index 3a14ec9..e5489f7 100644
--- a/globalDisplayOptions.go
+++ b/globalDisplayOptions.go
@@ -1,46 +1,14 @@
package main
import (
+ "os"
+
"go.wit.com/gui"
"go.wit.com/lib/debugger"
"go.wit.com/lib/gui/logsettings"
- "go.wit.com/lib/gui/repolist"
"go.wit.com/log"
)
-func showHideRepos(repo *repolist.RepoRow) {
- if repo.GoPath() == "go.wit.com/dev/alexflint/arg" {
- log.Info("found autoHideReleased() =", me.autoHideReleased.Checked())
- log.Info("found alexflint/arg IsReleased() =", repo.Status.IsReleased())
- }
- // always show dirty repos
- if repo.IsDirty() {
- repo.Show()
- return
- }
- // always show repos that have not been merged ?
- if repo.GoState() == "merge to devel" {
- repo.Show()
- return
- }
-
- // hide read-only repos. These are repos that do not
- // match things in the users config file (.config/autotypist)
- if me.autoHideReadOnly.Checked() {
- if repo.Status.ReadOnly() {
- repo.Hide()
- return
- }
- }
- if me.autoHideReleased.Checked() {
- if repo.Status.IsReleased() {
- repo.Hide()
- return
- }
- }
- repo.Show()
-}
-
func globalDisplayOptions(box *gui.Node) {
vbox := box.NewVerticalBox("DISPLAYVBOX")
@@ -73,8 +41,15 @@ func globalDisplayOptions(box *gui.Node) {
me.scanEveryMinute = hidegrid.NewCheckbox("Scan every minute").SetChecked(false)
me.scanEveryMinute.Custom = func() {
- me.repos.View.SetAutoScan(me.scanEveryMinute.Checked())
+ if me.scanEveryMinute.Checked() {
+ os.Setenv("REPO_AUTO_SCAN", "true")
+ log.Info("env REPO_AUTO_SCAN=", os.Getenv("REPO_AUTO_SCAN"))
+ } else {
+ os.Unsetenv("REPO_AUTO_SCAN")
+ log.Info("env REPO_AUTO_SCAN=", os.Getenv("REPO_AUTO_SCAN"))
+ }
}
+
hidegrid.NewButton("scan now", func() {
log.Info("re-scanning repos now")
i, s := me.repos.View.ScanRepositories()
diff --git a/hideFunction.go b/hideFunction.go
new file mode 100644
index 0000000..30bf485
--- /dev/null
+++ b/hideFunction.go
@@ -0,0 +1,89 @@
+package main
+
+import (
+ "os"
+
+ "go.wit.com/lib/gui/repolist"
+ "go.wit.com/log"
+)
+
+// like tcl/tk, use ENV variables to set display preferences
+func hideFunction(r *repolist.RepoRow) {
+ if r.GoPath() == "go.wit.com/dev/alexflint/arg" {
+ log.Info("found autoHideReleased() =", me.autoHideReleased.Checked())
+ log.Info("found alexflint/arg IsReleased() =", r.Status.IsReleased())
+ }
+
+ // always show dirty repos
+ if r.Status.IsDirty() {
+ r.Show()
+ return
+ }
+
+ // hide read-only repos
+ if os.Getenv("AUTOTYPIST_READONLY") == "hide" {
+ if r.Status.ReadOnly() {
+ // log.Info(r.Name(), "hiding read-only repo")
+ r.Hide()
+ return
+ } else {
+ // log.Info(r.Name(), "not hiding read-only repo")
+ }
+ }
+
+ // show repos with mismatched mode
+ // this means, if you are in "devel" mode, show all the repos that
+ // might be stuck on the wrong branch, like 'master' or '<username>'
+ if os.Getenv("AUTOTYPIST_MODE") != "" {
+ if !r.Status.IsCorrectMode(os.Getenv("AUTOTYPIST_MODE")) {
+ r.Show()
+ return
+ }
+ }
+
+ // hide perfectly clean repos
+ if os.Getenv("AUTOTYPIST_CLEAN") == "hide" {
+ if r.IsPerfect() {
+ r.Hide()
+ return
+ }
+ }
+
+ // show everything else. often this will be "unconforming" repos
+ // if you what those repos ignored, add these to the config file
+ // as read-only=true
+ r.Show()
+}
+
+func showHideRepos(repo *repolist.RepoRow) {
+ if repo.GoPath() == "go.wit.com/dev/alexflint/arg" {
+ log.Info("found autoHideReleased() =", me.autoHideReleased.Checked())
+ log.Info("found alexflint/arg IsReleased() =", repo.Status.IsReleased())
+ }
+ // always show dirty repos
+ if repo.IsDirty() {
+ repo.Show()
+ return
+ }
+ // always show repos that have not been merged ?
+ if repo.GoState() == "merge to devel" {
+ repo.Show()
+ return
+ }
+
+ // hide read-only repos. These are repos that do not
+ // match things in the users config file (.config/autotypist)
+ if me.autoHideReadOnly.Checked() {
+ if repo.Status.ReadOnly() {
+ repo.Hide()
+ return
+ }
+ }
+ if me.autoHideReleased.Checked() {
+ if repo.Status.IsReleased() {
+ repo.Hide()
+ return
+ }
+ }
+ repo.Show()
+}
diff --git a/main.go b/main.go
index 1ab0032..5cc270d 100644
--- a/main.go
+++ b/main.go
@@ -94,7 +94,7 @@ func main() {
setTargetVersion()
// register a Show/Hide function for the repo list table
- me.repos.View.RegisterHideFunction(showHideRepos)
+ me.repos.View.RegisterHideFunction(hideFunction)
// scan in the State of all the repos
// TODO: should not really be necessary directly after init()