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 '' + 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()