From 3259e16adaf99f0f8d7fdd772ff32cd624976eec Mon Sep 17 00:00:00 2001 From: Chris Cummer Date: Mon, 15 Apr 2019 20:44:31 -0700 Subject: [PATCH] WTF-400 Mercurial extracted to new config format --- main.go | 3 ++- modules/mercurial/hg_repo.go | 10 ++++------ modules/mercurial/settings.go | 28 ++++++++++++++++++++++++++++ modules/mercurial/widget.go | 18 ++++++++++-------- 4 files changed, 44 insertions(+), 15 deletions(-) create mode 100644 modules/mercurial/settings.go diff --git a/main.go b/main.go index f8ab6313..704248c3 100644 --- a/main.go +++ b/main.go @@ -247,7 +247,8 @@ func makeWidget(app *tview.Application, pages *tview.Pages, widgetName string) w settings := logger.NewSettingsFromYAML(wtf.Config) widget = logger.NewWidget(app, settings) case "mercurial": - widget = mercurial.NewWidget(app, pages) + settings := mercurial.NewSettingsFromYAML(wtf.Config) + widget = mercurial.NewWidget(app, pages, settings) case "nbascore": widget = nbascore.NewWidget(app, pages) case "newrelic": diff --git a/modules/mercurial/hg_repo.go b/modules/mercurial/hg_repo.go index 27774c96..ae53a21f 100644 --- a/modules/mercurial/hg_repo.go +++ b/modules/mercurial/hg_repo.go @@ -19,13 +19,13 @@ type MercurialRepo struct { Path string } -func NewMercurialRepo(repoPath string) *MercurialRepo { +func NewMercurialRepo(repoPath string, commitCount int, commitFormat string) *MercurialRepo { repo := MercurialRepo{Path: repoPath} repo.Branch = strings.TrimSpace(repo.branch()) repo.Bookmark = strings.TrimSpace(repo.bookmark()) repo.ChangedFiles = repo.changedFiles() - repo.Commits = repo.commits() + repo.Commits = repo.commits(commitCount, commitFormat) repo.Repository = strings.TrimSpace(repo.Path) return &repo @@ -61,10 +61,8 @@ func (repo *MercurialRepo) changedFiles() []string { return data } -func (repo *MercurialRepo) commits() []string { - numStr := fmt.Sprintf("-l %d", wtf.Config.UInt("wtf.mods.mercurial.commitCount", 10)) - - commitFormat := wtf.Config.UString("wtf.mods.mercurial.commitFormat", "[forestgreen]{rev}:{phase} [white]{desc|firstline|strip} [grey]{author|person} {date|age}[white]") +func (repo *MercurialRepo) commits(commitCount int, commitFormat string) []string { + numStr := fmt.Sprintf("-l %d", commitCount) commitStr := fmt.Sprintf("--template=\"%s\n\"", commitFormat) arg := []string{"log", repo.repoPath(), numStr, commitStr} diff --git a/modules/mercurial/settings.go b/modules/mercurial/settings.go new file mode 100644 index 00000000..a8a48afb --- /dev/null +++ b/modules/mercurial/settings.go @@ -0,0 +1,28 @@ +package mercurial + +import ( + "github.com/olebedev/config" + "github.com/wtfutil/wtf/cfg" +) + +type Settings struct { + common *cfg.Common + + commitCount int + commitFormat string + repositories []interface{} +} + +func NewSettingsFromYAML(ymlConfig *config.Config) *Settings { + localConfig, _ := ymlConfig.Get("wtf.mods.mercurial") + + settings := Settings{ + common: cfg.NewCommonSettingsFromYAML(ymlConfig), + + commitCount: localConfig.UInt("commitCount", 10), + commitFormat: localConfig.UString("commitFormat", "[forestgreen]{rev}:{phase} [white]{desc|firstline|strip} [grey]{author|person} {date|age}[white]"), + repositories: localConfig.UList("repositories"), + } + + return &settings +} diff --git a/modules/mercurial/widget.go b/modules/mercurial/widget.go index 2947fef7..b42d780e 100644 --- a/modules/mercurial/widget.go +++ b/modules/mercurial/widget.go @@ -28,19 +28,21 @@ type Widget struct { wtf.MultiSourceWidget wtf.TextWidget - app *tview.Application - Data []*MercurialRepo - pages *tview.Pages + app *tview.Application + Data []*MercurialRepo + pages *tview.Pages + settings *Settings } -func NewWidget(app *tview.Application, pages *tview.Pages) *Widget { +func NewWidget(app *tview.Application, pages *tview.Pages, settings *Settings) *Widget { widget := Widget{ HelpfulWidget: wtf.NewHelpfulWidget(app, pages, HelpText), MultiSourceWidget: wtf.NewMultiSourceWidget("mercurial", "repository", "repositories"), TextWidget: wtf.NewTextWidget(app, "Mercurial", "mercurial", true), - app: app, - pages: pages, + app: app, + pages: pages, + settings: settings, } widget.LoadSources() @@ -79,7 +81,7 @@ func (widget *Widget) Pull() { } func (widget *Widget) Refresh() { - repoPaths := wtf.ToStrs(wtf.Config.UList("wtf.mods.mercurial.repositories")) + repoPaths := wtf.ToStrs(widget.settings.repositories) widget.Data = widget.mercurialRepos(repoPaths) widget.display() @@ -156,7 +158,7 @@ func (widget *Widget) mercurialRepos(repoPaths []string) []*MercurialRepo { repos := []*MercurialRepo{} for _, repoPath := range repoPaths { - repo := NewMercurialRepo(repoPath) + repo := NewMercurialRepo(repoPath, widget.settings.commitCount, widget.settings.commitFormat) repos = append(repos, repo) }