From 83980a3dff1e777c808c43a0ccc98e78335ca523 Mon Sep 17 00:00:00 2001 From: Jan De Dobbeleer Date: Tue, 1 Feb 2022 14:07:58 +0100 Subject: [PATCH] feat: deprecate pre- and postfix --- docs/docs/contributing-segment.md | 2 +- src/engine/block.go | 12 +----- src/engine/migrations.go | 39 ++++++++++++++++-- src/engine/migrations_test.go | 66 ++++++++++++++++++++++++++----- src/engine/segment.go | 7 ---- src/properties/properties.go | 4 -- src/segments/aws.go | 2 +- src/segments/az.go | 2 +- src/segments/battery.go | 2 +- src/segments/brewfather.go | 2 +- src/segments/command.go | 2 +- src/segments/dotnet.go | 2 +- src/segments/executiontime.go | 2 +- src/segments/exit.go | 2 +- src/segments/git.go | 2 +- src/segments/ipify.go | 2 +- src/segments/kubectl.go | 2 +- src/segments/kubectl_test.go | 2 +- src/segments/language.go | 2 +- src/segments/nbgv.go | 2 +- src/segments/nightscout.go | 2 +- src/segments/node.go | 2 +- src/segments/os.go | 2 +- src/segments/owm.go | 2 +- src/segments/owm_test.go | 2 +- src/segments/path.go | 2 +- src/segments/path_test.go | 5 ++- src/segments/plastic.go | 2 +- src/segments/posh_git.go | 2 +- src/segments/python.go | 2 +- src/segments/root.go | 2 +- src/segments/session.go | 2 +- src/segments/shell.go | 2 +- src/segments/spotify.go | 2 +- src/segments/spotify_test.go | 2 +- src/segments/spotify_wsl_test.go | 6 +-- src/segments/strava.go | 2 +- src/segments/sysinfo.go | 2 +- src/segments/sysinfo_test.go | 2 +- src/segments/terraform.go | 2 +- src/segments/text.go | 2 +- src/segments/time.go | 2 +- src/segments/wakatime.go | 2 +- src/segments/wifi.go | 2 +- src/segments/winreg.go | 2 +- src/segments/ytm.go | 2 +- 46 files changed, 139 insertions(+), 78 deletions(-) diff --git a/docs/docs/contributing-segment.md b/docs/docs/contributing-segment.md index 2374b38e..084c6d73 100644 --- a/docs/docs/contributing-segment.md +++ b/docs/docs/contributing-segment.md @@ -36,7 +36,7 @@ func (n *new) Enabled() bool { } func (n *new) Template() string { - return "{{.Text}} world" + return " {{.Text}} world " } func (n *new) Init(props properties.Properties, env environment.Environment) { diff --git a/src/engine/block.go b/src/engine/block.go index 1251cb6f..95cb87b5 100644 --- a/src/engine/block.go +++ b/src/engine/block.go @@ -3,7 +3,6 @@ package engine import ( "oh-my-posh/color" "oh-my-posh/environment" - "oh-my-posh/properties" "sync" "time" ) @@ -111,23 +110,16 @@ func (b *Block) renderSegment(segment *Segment) { b.writePowerline(false) switch b.activeSegment.Style { case Plain, Powerline: - b.renderText(segment.stringValue) + b.writer.Write(b.activeBackground, b.activeForeground, segment.stringValue) case Diamond: b.writer.Write(color.Transparent, b.activeBackground, b.activeSegment.LeadingDiamond) - b.renderText(segment.stringValue) + b.writer.Write(b.activeBackground, b.activeForeground, segment.stringValue) b.writer.Write(color.Transparent, b.activeBackground, b.activeSegment.TrailingDiamond) } b.previousActiveSegment = b.activeSegment b.writer.SetParentColors(b.activeBackground, b.activeForeground) } -func (b *Block) renderText(text string) { - defaultValue := " " - b.writer.Write(b.activeBackground, b.activeForeground, b.activeSegment.getValue(properties.Prefix, defaultValue)) - b.writer.Write(b.activeBackground, b.activeForeground, text) - b.writer.Write(b.activeBackground, b.activeForeground, b.activeSegment.getValue(properties.Postfix, defaultValue)) -} - func (b *Block) writePowerline(final bool) { resolvePowerlineSymbol := func() string { var symbol string diff --git a/src/engine/migrations.go b/src/engine/migrations.go index 8214d774..46c50a38 100644 --- a/src/engine/migrations.go +++ b/src/engine/migrations.go @@ -10,12 +10,18 @@ import ( const ( colorBackground = properties.Property("color_background") + + prefix = properties.Property("prefix") + postfix = properties.Property("postfix") ) func (cfg *Config) Migrate(env environment.Environment) { for _, block := range cfg.Blocks { block.migrate(env) } + for _, segment := range cfg.Tooltips { + segment.migrate(env) + } cfg.updated = true } @@ -66,9 +72,9 @@ func (segment *Segment) migrate(env environment.Environment) { stateList = append(stateList, `"Full"`) } if len(stateList) < 3 { - enabledTemplate := "{{ $stateList := list %s }}{{ if has .State.String $stateList }}{{.Icon}}{{.Percentage}}{{ end }}" + enabledTemplate := "{{ $stateList := list %s }}{{ if has .State.String $stateList }}{{ .Icon }}{{ .Percentage }}{{ end }}" template := segment.Properties.GetString(properties.SegmentTemplate, segment.writer.Template()) - template = strings.ReplaceAll(template, "{{.Icon}}{{.Percentage}}", fmt.Sprintf(enabledTemplate, strings.Join(stateList, " "))) + template = strings.ReplaceAll(template, "{{ .Icon }}{{ .Percentage }}", fmt.Sprintf(enabledTemplate, strings.Join(stateList, " "))) segment.Properties[properties.SegmentTemplate] = template } case PYTHON: @@ -98,7 +104,8 @@ func (segment *Segment) migrate(env environment.Environment) { segment.migrateColorOverride("version_mismatch_color", "{{ if .Mismatch }}%s{{ end }}") } case EXIT: - template := segment.writer.Template() + segment.migrateTemplate() + template := segment.Properties.GetString(properties.SegmentTemplate, segment.writer.Template()) displayExitCode := properties.Property("display_exit_code") if !segment.Properties.GetBool(displayExitCode, true) { delete(segment.Properties, displayExitCode) @@ -144,7 +151,15 @@ func (segment *Segment) migratePropertyKey(oldProperty, newProperty properties.P } func (segment *Segment) migrateTemplate() { + defer segment.migratePreAndPostFix() if segment.hasProperty(properties.SegmentTemplate) { + // existing template, ensure to add default pre/postfix values + if !segment.hasProperty(prefix) { + segment.Properties[prefix] = " " + } + if !segment.hasProperty(postfix) { + segment.Properties[postfix] = " " + } return } segment.Properties[properties.SegmentTemplate] = segment.writer.Template() @@ -191,3 +206,21 @@ func (segment *Segment) migrateInlineColorOverride(property properties.Property, template = strings.ReplaceAll(template, old, colorTemplate) segment.Properties[properties.SegmentTemplate] = template } + +func (segment *Segment) migratePreAndPostFix() { + template := segment.Properties.GetString(properties.SegmentTemplate, segment.writer.Template()) + defaultValue := " " + if segment.hasProperty(prefix) { + prefix := segment.Properties.GetString(prefix, defaultValue) + template = strings.TrimPrefix(template, defaultValue) + template = prefix + template + delete(segment.Properties, "prefix") + } + if segment.hasProperty(postfix) { + postfix := segment.Properties.GetString(postfix, defaultValue) + template = strings.TrimSuffix(template, defaultValue) + template += postfix + delete(segment.Properties, "postfix") + } + segment.Properties[properties.SegmentTemplate] = template +} diff --git a/src/engine/migrations_test.go b/src/engine/migrations_test.go index c83f21e3..93deaff8 100644 --- a/src/engine/migrations_test.go +++ b/src/engine/migrations_test.go @@ -195,7 +195,7 @@ func TestSegmentTemplateMigration(t *testing.T) { }{ { Case: "GIT", - Expected: "{{ .HEAD }} {{ .BranchStatus }}{{ if .Working.Changed }} working {{ .Working.String }}{{ end }}{{ if and (.Staging.Changed) (.Working.Changed) }} and{{ end }}{{ if .Staging.Changed }} staged {{ .Staging.String }}{{ end }}{{ if gt .StashCount 0}} stash {{ .StashCount }}{{ end }}{{ if gt .WorktreeCount 0}} worktree {{ .WorktreeCount }}{{ end }}", // nolint: lll + Expected: " {{ .HEAD }} {{ .BranchStatus }}{{ if .Working.Changed }} working {{ .Working.String }}{{ end }}{{ if and (.Staging.Changed) (.Working.Changed) }} and{{ end }}{{ if .Staging.Changed }} staged {{ .Staging.String }}{{ end }}{{ if gt .StashCount 0}} stash {{ .StashCount }}{{ end }}{{ if gt .WorktreeCount 0}} worktree {{ .WorktreeCount }}{{ end }} ", // nolint: lll Type: GIT, Props: properties.Map{ "local_working_icon": " working ", @@ -207,7 +207,7 @@ func TestSegmentTemplateMigration(t *testing.T) { }, { Case: "GIT - Staging and Working Color", - Expected: "{{ .HEAD }} {{ .BranchStatus }}{{ if .Working.Changed }} working <#123456>{{ .Working.String }}{{ end }}{{ if and (.Staging.Changed) (.Working.Changed) }} and{{ end }}{{ if .Staging.Changed }} staged <#123456>{{ .Staging.String }}{{ end }}{{ if gt .StashCount 0}} stash {{ .StashCount }}{{ end }}{{ if gt .WorktreeCount 0}} worktree {{ .WorktreeCount }}{{ end }}", // nolint: lll + Expected: " {{ .HEAD }} {{ .BranchStatus }}{{ if .Working.Changed }} working <#123456>{{ .Working.String }}{{ end }}{{ if and (.Staging.Changed) (.Working.Changed) }} and{{ end }}{{ if .Staging.Changed }} staged <#123456>{{ .Staging.String }}{{ end }}{{ if gt .StashCount 0}} stash {{ .StashCount }}{{ end }}{{ if gt .WorktreeCount 0}} worktree {{ .WorktreeCount }}{{ end }} ", // nolint: lll Type: GIT, Props: properties.Map{ "local_working_icon": " working ", @@ -221,7 +221,7 @@ func TestSegmentTemplateMigration(t *testing.T) { }, { Case: "EXIT - No exit Code with Icon overrides", - Expected: "{{ if gt .Code 0 }}FAIL{{ else }}SUCCESS{{ end }}", + Expected: " {{ if gt .Code 0 }}FAIL{{ else }}SUCCESS{{ end }} ", Type: EXIT, Props: properties.Map{ "display_exit_code": false, @@ -231,7 +231,7 @@ func TestSegmentTemplateMigration(t *testing.T) { }, { Case: "EXIT - Always numeric", - Expected: "{{ if gt .Code 0 }}FAIL {{ .Code }}{{ else }}SUCCESS{{ end }}", + Expected: " {{ if gt .Code 0 }}FAIL {{ .Code }}{{ else }}SUCCESS{{ end }} ", Type: EXIT, Props: properties.Map{ "always_numeric": true, @@ -241,7 +241,7 @@ func TestSegmentTemplateMigration(t *testing.T) { }, { Case: "BATTERY", - Expected: `{{ if not .Error }}{{ $stateList := list "Discharging" "Full" }}{{ if has .State.String $stateList }}{{.Icon}}{{.Percentage}}{{ end }}{{ end }}{{.Error}}`, + Expected: ` {{ if not .Error }}{{ $stateList := list "Discharging" "Full" }}{{ if has .State.String $stateList }}{{ .Icon }}{{ .Percentage }}{{ end }}{{ end }}{{ .Error }} `, Type: BATTERY, Props: properties.Map{ "display_charging": false, @@ -249,7 +249,7 @@ func TestSegmentTemplateMigration(t *testing.T) { }, { Case: "SESSION", - Expected: "{{ if .SSHSession }}SSH {{ end }}{{ .UserName }}@{{ .HostName }}", + Expected: " {{ if .SSHSession }}SSH {{ end }}{{ .UserName }}@{{ .HostName }} ", Type: SESSION, Props: properties.Map{ "ssh_icon": "SSH ", @@ -257,7 +257,7 @@ func TestSegmentTemplateMigration(t *testing.T) { }, { Case: "SESSION no HOST", - Expected: "{{ if .SSHSession }}\uf817 {{ end }}{{ .UserName }}", + Expected: " {{ if .SSHSession }}\uf817 {{ end }}{{ .UserName }} ", Type: SESSION, Props: properties.Map{ "display_host": false, @@ -265,7 +265,7 @@ func TestSegmentTemplateMigration(t *testing.T) { }, { Case: "SESSION no USER", - Expected: "{{ if .SSHSession }}\uf817 {{ end }}{{ .HostName }}", + Expected: " {{ if .SSHSession }}\uf817 {{ end }}{{ .HostName }} ", Type: SESSION, Props: properties.Map{ "display_user": false, @@ -273,7 +273,7 @@ func TestSegmentTemplateMigration(t *testing.T) { }, { Case: "SESSION no USER nor HOST", - Expected: "{{ if .SSHSession }}\uf817 {{ end }}", + Expected: " {{ if .SSHSession }}\uf817 {{ end }} ", Type: SESSION, Props: properties.Map{ "display_user": false, @@ -282,7 +282,7 @@ func TestSegmentTemplateMigration(t *testing.T) { }, { Case: "SESSION - Color overrides", - Expected: "{{ if .SSHSession }}\uf817 {{ end }}<#123456>{{ .UserName }}@<#789012>{{ .HostName }}", + Expected: " {{ if .SSHSession }}\uf817 {{ end }}<#123456>{{ .UserName }}@<#789012>{{ .HostName }} ", Type: SESSION, Props: properties.Map{ "user_color": "#123456", @@ -337,3 +337,49 @@ func TestInlineColorOverride(t *testing.T) { assert.Equal(t, tc.Expected, segment.Properties[properties.SegmentTemplate], tc.Case) } } + +func TestMigratePreAndPostfix(t *testing.T) { + cases := []struct { + Case string + Expected string + Props properties.Map + }{ + { + Case: "Pre and Postfix", + Expected: "\ue0b6 \uf489 {{ .Name }} \ue0b2", + Props: properties.Map{ + "postfix": " \ue0b2", + "prefix": "\ue0b6 \uf489 ", + "template": "{{ .Name }}", + }, + }, + { + Case: "Prefix", + Expected: " {{ .Name }} ", + Props: properties.Map{ + "prefix": " ", + "template": "{{ .Name }}", + }, + }, + { + Case: "Postfix", + Expected: " {{ .Name }} ", + Props: properties.Map{ + "postfix": " ", + "template": "{{ .Name }} ", + }, + }, + } + for _, tc := range cases { + segment := &Segment{ + Properties: tc.Props, + writer: &MockedWriter{ + template: tc.Props.GetString(properties.SegmentTemplate, ""), + }, + } + segment.migrateTemplate() + assert.Equal(t, tc.Expected, segment.Properties[properties.SegmentTemplate], tc.Case) + assert.NotContains(t, segment.Properties, "prefix", tc.Case) + assert.NotContains(t, segment.Properties, "postfix", tc.Case) + } +} diff --git a/src/engine/segment.go b/src/engine/segment.go index 944fd30f..1217419a 100644 --- a/src/engine/segment.go +++ b/src/engine/segment.go @@ -169,13 +169,6 @@ func (segment *Segment) enabled() bool { return segment.active } -func (segment *Segment) getValue(property properties.Property, defaultValue string) string { - if value, ok := segment.Properties[property]; ok { - return properties.ParseString(value, defaultValue) - } - return defaultValue -} - func (segment *Segment) shouldIncludeFolder() bool { cwdIncluded := segment.cwdIncluded() cwdExcluded := segment.cwdExcluded() diff --git a/src/properties/properties.go b/src/properties/properties.go index 52f76c5a..0a497da6 100644 --- a/src/properties/properties.go +++ b/src/properties/properties.go @@ -23,10 +23,6 @@ type Property string const ( // Style indicates with style to use Style Property = "style" - // Prefix adds a text prefix to the segment - Prefix Property = "prefix" - // Postfix adds a text postfix to the segment - Postfix Property = "postfix" // IncludeFolders folders to be included for the segment logic IncludeFolders Property = "include_folders" // ExcludeFolders folders to be excluded for the segment logic diff --git a/src/segments/aws.go b/src/segments/aws.go index 8faa872c..497cc81c 100644 --- a/src/segments/aws.go +++ b/src/segments/aws.go @@ -20,7 +20,7 @@ const ( ) func (a *Aws) Template() string { - return "{{ .Profile }}{{ if .Region }}@{{ .Region }}{{ end }}" + return " {{ .Profile }}{{ if .Region }}@{{ .Region }}{{ end }} " } func (a *Aws) Init(props properties.Properties, env environment.Environment) { diff --git a/src/segments/az.go b/src/segments/az.go index 161534ca..8950c7e4 100644 --- a/src/segments/az.go +++ b/src/segments/az.go @@ -81,7 +81,7 @@ type AzurePowerShellSubscription struct { } func (a *Az) Template() string { - return "{{ .Name }}" + return " {{ .Name }} " } func (a *Az) Init(props properties.Properties, env environment.Environment) { diff --git a/src/segments/battery.go b/src/segments/battery.go index 32014fee..0a155b05 100644 --- a/src/segments/battery.go +++ b/src/segments/battery.go @@ -28,7 +28,7 @@ const ( ) func (b *Battery) Template() string { - return "{{ if not .Error }}{{ .Icon }}{{ .Percentage }}{{ end }}{{ .Error }}" + return " {{ if not .Error }}{{ .Icon }}{{ .Percentage }}{{ end }}{{ .Error }} " } func (b *Battery) Enabled() bool { diff --git a/src/segments/brewfather.go b/src/segments/brewfather.go index 59006bf5..8399db8e 100644 --- a/src/segments/brewfather.go +++ b/src/segments/brewfather.go @@ -97,7 +97,7 @@ type Batch struct { } func (bf *Brewfather) Template() string { - return "{{ .StatusIcon }} {{ if .DaysBottledOrFermented }}{{ .DaysBottledOrFermented }}{{ .DayIcon }} {{ end }}{{ url .Recipe.Name .URL }} {{ printf \"%.1f\" .MeasuredAbv }}%{{ if and (.Reading) (eq .Status \"Fermenting\") }} {{ printf \"%.3f\" .Reading.Gravity }} {{ .Reading.Temperature }}\u00b0 {{ .TemperatureTrendIcon }}{{ end }}" // nolint:lll + return " {{ .StatusIcon }} {{ if .DaysBottledOrFermented }}{{ .DaysBottledOrFermented }}{{ .DayIcon }} {{ end }}{{ url .Recipe.Name .URL }} {{ printf \"%.1f\" .MeasuredAbv }}%{{ if and (.Reading) (eq .Status \"Fermenting\") }} {{ printf \"%.3f\" .Reading.Gravity }} {{ .Reading.Temperature }}\u00b0 {{ .TemperatureTrendIcon }}{{ end }} " // nolint:lll } func (bf *Brewfather) Enabled() bool { diff --git a/src/segments/command.go b/src/segments/command.go index 5e18d34e..66dc079e 100644 --- a/src/segments/command.go +++ b/src/segments/command.go @@ -21,7 +21,7 @@ const ( ) func (c *Cmd) Template() string { - return "{{ .Output }}" + return " {{ .Output }} " } func (c *Cmd) Enabled() bool { diff --git a/src/segments/dotnet.go b/src/segments/dotnet.go index fe0aa5c4..01907e76 100644 --- a/src/segments/dotnet.go +++ b/src/segments/dotnet.go @@ -13,7 +13,7 @@ type Dotnet struct { } func (d *Dotnet) Template() string { - return "{{ if .Unsupported }}\uf071{{ else }}{{ .Full }}{{ end }}" + return " {{ if .Unsupported }}\uf071{{ else }}{{ .Full }}{{ end }} " } func (d *Dotnet) Init(props properties.Properties, env environment.Environment) { diff --git a/src/segments/executiontime.go b/src/segments/executiontime.go index 8012fc20..d2194b27 100644 --- a/src/segments/executiontime.go +++ b/src/segments/executiontime.go @@ -62,7 +62,7 @@ func (t *Executiontime) Enabled() bool { } func (t *Executiontime) Template() string { - return "{{ .FormattedMs }}" + return " {{ .FormattedMs }} " } func (t *Executiontime) Init(props properties.Properties, env environment.Environment) { diff --git a/src/segments/exit.go b/src/segments/exit.go index 289b1be6..ef824c1d 100644 --- a/src/segments/exit.go +++ b/src/segments/exit.go @@ -14,7 +14,7 @@ type Exit struct { } func (e *Exit) Template() string { - return "{{ if gt .Code 0 }}\uf00d {{ .Meaning }}{{ else }}\uf42e{{ end }}" + return " {{ if gt .Code 0 }}\uf00d {{ .Meaning }}{{ else }}\uf42e{{ end }} " } func (e *Exit) Enabled() bool { diff --git a/src/segments/git.go b/src/segments/git.go index c7da6f5d..28ce0591 100644 --- a/src/segments/git.go +++ b/src/segments/git.go @@ -108,7 +108,7 @@ const ( ) func (g *Git) Template() string { - return "{{ .HEAD }} {{ .BranchStatus }}{{ if .Working.Changed }} \uF044 {{ .Working.String }}{{ end }}{{ if and (.Staging.Changed) (.Working.Changed) }} |{{ end }}{{ if .Staging.Changed }} \uF046 {{ .Staging.String }}{{ end }}{{ if gt .StashCount 0}} \uF692 {{ .StashCount }}{{ end }}{{ if gt .WorktreeCount 0}} \uf1bb {{ .WorktreeCount }}{{ end }}" // nolint: lll + return " {{ .HEAD }} {{ .BranchStatus }}{{ if .Working.Changed }} \uF044 {{ .Working.String }}{{ end }}{{ if and (.Staging.Changed) (.Working.Changed) }} |{{ end }}{{ if .Staging.Changed }} \uF046 {{ .Staging.String }}{{ end }}{{ if gt .StashCount 0}} \uF692 {{ .StashCount }}{{ end }}{{ if gt .WorktreeCount 0}} \uf1bb {{ .WorktreeCount }}{{ end }} " // nolint: lll } func (g *Git) Enabled() bool { diff --git a/src/segments/ipify.go b/src/segments/ipify.go index 45a9959a..b383cc14 100644 --- a/src/segments/ipify.go +++ b/src/segments/ipify.go @@ -16,7 +16,7 @@ const ( ) func (i *IPify) Template() string { - return "{{ .IP }}" + return " {{ .IP }} " } func (i *IPify) Enabled() bool { diff --git a/src/segments/kubectl.go b/src/segments/kubectl.go index 4adc3785..931580fa 100644 --- a/src/segments/kubectl.go +++ b/src/segments/kubectl.go @@ -35,7 +35,7 @@ type KubeContext struct { } func (k *Kubectl) Template() string { - return "{{ .Context }}{{ if .Namespace }} :: {{ .Namespace }}{{ end }}" + return " {{ .Context }}{{ if .Namespace }} :: {{ .Namespace }}{{ end }} " } func (k *Kubectl) Init(props properties.Properties, env environment.Environment) { diff --git a/src/segments/kubectl_test.go b/src/segments/kubectl_test.go index 238c497a..f733a7e8 100644 --- a/src/segments/kubectl_test.go +++ b/src/segments/kubectl_test.go @@ -40,7 +40,7 @@ func TestKubectlSegment(t *testing.T) { ParseKubeConfig: true, Kubeconfig: "currentcontextmarker" + lsep + "contextdefinitionincomplete", Files: testKubeConfigFiles, - ExpectedString: "ctx :: :: :: ", + ExpectedString: "ctx :: :: ::", ExpectedEnabled: true, }, {Case: "disabled", Template: standardTemplate, KubectlExists: false, Context: "aaa", Namespace: "bbb", ExpectedEnabled: false}, diff --git a/src/segments/language.go b/src/segments/language.go index fdeaa007..f19399a2 100644 --- a/src/segments/language.go +++ b/src/segments/language.go @@ -10,7 +10,7 @@ import ( ) const ( - languageTemplate = "{{ if .Error }}{{ .Error }}{{ else }}{{ .Full }}{{ end }}" + languageTemplate = " {{ if .Error }}{{ .Error }}{{ else }}{{ .Full }}{{ end }} " ) type loadContext func() diff --git a/src/segments/nbgv.go b/src/segments/nbgv.go index eb766386..00d4e9d9 100644 --- a/src/segments/nbgv.go +++ b/src/segments/nbgv.go @@ -25,7 +25,7 @@ type VersionInfo struct { } func (n *Nbgv) Template() string { - return "{{ .Version }}" + return " {{ .Version }} " } func (n *Nbgv) Enabled() bool { diff --git a/src/segments/nightscout.go b/src/segments/nightscout.go index feb45fd3..19332a82 100644 --- a/src/segments/nightscout.go +++ b/src/segments/nightscout.go @@ -48,7 +48,7 @@ type NightscoutData struct { } func (ns *Nightscout) Template() string { - return "{{ .Sgv }}" + return " {{ .Sgv }} " } func (ns *Nightscout) Enabled() bool { diff --git a/src/segments/node.go b/src/segments/node.go index 35cf5173..b5dd1f87 100644 --- a/src/segments/node.go +++ b/src/segments/node.go @@ -23,7 +23,7 @@ const ( ) func (n *Node) Template() string { - return "{{ if .PackageManagerIcon }}{{ .PackageManagerIcon }} {{ end }}{{ .Full }}" + return " {{ if .PackageManagerIcon }}{{ .PackageManagerIcon }} {{ end }}{{ .Full }} " } func (n *Node) Init(props properties.Properties, env environment.Environment) { diff --git a/src/segments/os.go b/src/segments/os.go index f7921963..f4b12736 100644 --- a/src/segments/os.go +++ b/src/segments/os.go @@ -62,7 +62,7 @@ const ( ) func (oi *Os) Template() string { - return "{{ if .WSL }}WSL at {{ end }}{{.Icon}}" + return " {{ if .WSL }}WSL at {{ end }}{{.Icon}} " } func (oi *Os) Enabled() bool { diff --git a/src/segments/owm.go b/src/segments/owm.go index 2846f2c7..1f1b8e67 100644 --- a/src/segments/owm.go +++ b/src/segments/owm.go @@ -54,7 +54,7 @@ func (d *Owm) Enabled() bool { } func (d *Owm) Template() string { - return "{{ .Weather }} ({{ .Temperature }}{{ .UnitIcon }})" + return " {{ .Weather }} ({{ .Temperature }}{{ .UnitIcon }}) " } func (d *Owm) getResult() (*owmDataResponse, error) { diff --git a/src/segments/owm_test.go b/src/segments/owm_test.go index 7c6bc8a4..2658f3c0 100644 --- a/src/segments/owm_test.go +++ b/src/segments/owm_test.go @@ -39,7 +39,7 @@ func TestOWMSegmentSingle(t *testing.T) { { Case: "Sunny Display", JSONResponse: `{"weather":[{"icon":"01d"}],"main":{"temp":20}}`, - ExpectedString: "\ufa98 ", + ExpectedString: "\ufa98", ExpectedEnabled: true, Template: "{{.Weather}} ", }, diff --git a/src/segments/path.go b/src/segments/path.go index 826c0ea9..9fce4f86 100644 --- a/src/segments/path.go +++ b/src/segments/path.go @@ -57,7 +57,7 @@ const ( ) func (pt *Path) Template() string { - return "{{ .Path }}" + return " {{ .Path }} " } func (pt *Path) Enabled() bool { diff --git a/src/segments/path_test.go b/src/segments/path_test.go index 42d75a29..50484140 100644 --- a/src/segments/path_test.go +++ b/src/segments/path_test.go @@ -5,6 +5,7 @@ import ( "oh-my-posh/mock" "oh-my-posh/properties" "oh-my-posh/template" + "strings" "testing" "github.com/stretchr/testify/assert" @@ -32,7 +33,7 @@ func renderTemplate(env *mock.MockedEnvironment, segmentTemplate string, context if err != nil { return err.Error() } - return text + return strings.TrimSpace(text) } const ( @@ -312,7 +313,7 @@ func TestGetFullPath(t *testing.T) { // StackCountEnabled=true and StackCount=2 {Style: Full, FolderSeparatorIcon: "|", Pwd: "/", StackCount: 2, Expected: "2 /"}, - {Style: Full, Pwd: "", StackCount: 2, Expected: "2 "}, + {Style: Full, Pwd: "", StackCount: 2, Expected: "2"}, {Style: Full, Pwd: "/", StackCount: 2, Expected: "2 /"}, {Style: Full, Pwd: "/usr/home", StackCount: 2, Expected: "2 ~"}, {Style: Full, Pwd: "/usr/home/abc", StackCount: 2, Expected: "2 ~/abc"}, diff --git a/src/segments/plastic.go b/src/segments/plastic.go index eac7e78b..9be8c8b5 100644 --- a/src/segments/plastic.go +++ b/src/segments/plastic.go @@ -43,7 +43,7 @@ func (p *Plastic) Init(props properties.Properties, env environment.Environment) } func (p *Plastic) Template() string { - return "{{ .Selector }}" + return " {{ .Selector }} " } func (p *Plastic) Enabled() bool { diff --git a/src/segments/posh_git.go b/src/segments/posh_git.go index 0094fcbe..475ce6ce 100644 --- a/src/segments/posh_git.go +++ b/src/segments/posh_git.go @@ -18,7 +18,7 @@ const ( ) func (p *PoshGit) Template() string { - return "{{ .Status }}" + return " {{ .Status }} " } func (p *PoshGit) Enabled() bool { diff --git a/src/segments/python.go b/src/segments/python.go index 600b1ed5..589c25f6 100644 --- a/src/segments/python.go +++ b/src/segments/python.go @@ -17,7 +17,7 @@ const ( ) func (p *Python) Template() string { - return "{{ if .Error }}{{ .Error }}{{ else }}{{ if .Venv }}{{ .Venv }} {{ end }}{{ .Full }}{{ end }}" + return " {{ if .Error }}{{ .Error }}{{ else }}{{ if .Venv }}{{ .Venv }} {{ end }}{{ .Full }}{{ end }} " } func (p *Python) Init(props properties.Properties, env environment.Environment) { diff --git a/src/segments/root.go b/src/segments/root.go index 459bdc5f..543e7f88 100644 --- a/src/segments/root.go +++ b/src/segments/root.go @@ -11,7 +11,7 @@ type Root struct { } func (rt *Root) Template() string { - return "\uF0E7" + return " \uF0E7 " } func (rt *Root) Enabled() bool { diff --git a/src/segments/session.go b/src/segments/session.go index 5a647e8e..a67ca777 100644 --- a/src/segments/session.go +++ b/src/segments/session.go @@ -22,7 +22,7 @@ func (s *Session) Enabled() bool { } func (s *Session) Template() string { - return "{{ if .SSHSession }}\uf817 {{ end }}{{ .UserName }}@{{ .HostName }}" + return " {{ if .SSHSession }}\uf817 {{ end }}{{ .UserName }}@{{ .HostName }} " } func (s *Session) Init(props properties.Properties, env environment.Environment) { diff --git a/src/segments/shell.go b/src/segments/shell.go index 32df063f..66c44be4 100644 --- a/src/segments/shell.go +++ b/src/segments/shell.go @@ -19,7 +19,7 @@ const ( ) func (s *Shell) Template() string { - return "{{ .Name }}" + return " {{ .Name }} " } func (s *Shell) Enabled() bool { diff --git a/src/segments/spotify.go b/src/segments/spotify.go index 2bb9c70c..a5032232 100644 --- a/src/segments/spotify.go +++ b/src/segments/spotify.go @@ -33,7 +33,7 @@ const ( ) func (s *Spotify) Template() string { - return "{{ .Icon }}{{ if ne .Status \"stopped\" }}{{ .Artist }} - {{ .Track }}{{ end }}" + return " {{ .Icon }}{{ if ne .Status \"stopped\" }}{{ .Artist }} - {{ .Track }}{{ end }} " } func (s *Spotify) resolveIcon() { diff --git a/src/segments/spotify_test.go b/src/segments/spotify_test.go index 5b14011f..01d1a8bb 100644 --- a/src/segments/spotify_test.go +++ b/src/segments/spotify_test.go @@ -25,7 +25,7 @@ func TestSpotifyStringPlayingSong(t *testing.T) { } func TestSpotifyStringStoppedSong(t *testing.T) { - expected := "\uf04d " + expected := "\uf04d" env := new(mock.MockedEnvironment) s := &Spotify{ MusicPlayer: MusicPlayer{ diff --git a/src/segments/spotify_wsl_test.go b/src/segments/spotify_wsl_test.go index 9b711ce2..388370b5 100644 --- a/src/segments/spotify_wsl_test.go +++ b/src/segments/spotify_wsl_test.go @@ -21,13 +21,13 @@ func TestSpotifyWsl(t *testing.T) { }{ { Case: "Spotify not running", - ExpectedString: " - ", + ExpectedString: "-", ExpectedEnabled: false, ExecOutput: "INFO: No tasks are running which match the specified criteria.\n", }, { Case: "Spotify stopped/paused", - ExpectedString: " - ", + ExpectedString: "-", ExpectedEnabled: false, ExecOutput: `"Spotify.exe","21824","Console","1","124,928 K","Running","PC\user","0:09:44","Spotify Premium" "Spotify.exe","21876","Console","1","25,520 K","Running","PC\user","0:00:00","N/A" @@ -49,7 +49,7 @@ func TestSpotifyWsl(t *testing.T) { }, { Case: "tasklist.exe not in path", - ExpectedString: " - ", + ExpectedString: "-", ExpectedEnabled: false, ExecOutput: ""}, } diff --git a/src/segments/strava.go b/src/segments/strava.go index d9dfbf99..eb2789a3 100644 --- a/src/segments/strava.go +++ b/src/segments/strava.go @@ -71,7 +71,7 @@ func (a *AuthError) Error() string { } func (s *Strava) Template() string { - return "{{ if .Error }}{{ .Error }}{{ else }}{{ .Ago }}{{ end }}" + return " {{ if .Error }}{{ .Error }}{{ else }}{{ .Ago }}{{ end }} " } func (s *Strava) Enabled() bool { diff --git a/src/segments/sysinfo.go b/src/segments/sysinfo.go index a37b6520..7bae3319 100644 --- a/src/segments/sysinfo.go +++ b/src/segments/sysinfo.go @@ -36,7 +36,7 @@ const ( ) func (s *SystemInfo) Template() string { - return "{{ round .PhysicalPercentUsed .Precision }}" + return " {{ round .PhysicalPercentUsed .Precision }} " } func (s *SystemInfo) Enabled() bool { diff --git a/src/segments/sysinfo_test.go b/src/segments/sysinfo_test.go index 53ddf83a..4535541c 100644 --- a/src/segments/sysinfo_test.go +++ b/src/segments/sysinfo_test.go @@ -44,7 +44,7 @@ func TestSysInfo(t *testing.T) { {Case: "not enabled", ExpectDisabled: true, SysInfo: SystemInfo{PhysicalPercentUsed: 0, SwapPercentUsed: 0}}, { Case: "2 physical cpus", - ExpectedString: "1200 1200 ", + ExpectedString: "1200 1200", Template: "{{range $cpu := .CPU}}{{round $cpu.Mhz 2 }} {{end}}", SysInfo: SystemInfo{CPU: []cpu.InfoStat{{Mhz: 1200}, {Mhz: 1200}}}, }, diff --git a/src/segments/terraform.go b/src/segments/terraform.go index 12ec61ab..37d1a4e1 100644 --- a/src/segments/terraform.go +++ b/src/segments/terraform.go @@ -13,7 +13,7 @@ type Terraform struct { } func (tf *Terraform) Template() string { - return "{{ .WorkspaceName }}" + return " {{ .WorkspaceName }} " } func (tf *Terraform) Init(props properties.Properties, env environment.Environment) { diff --git a/src/segments/text.go b/src/segments/text.go index d6c70b7e..e16a47f4 100644 --- a/src/segments/text.go +++ b/src/segments/text.go @@ -13,7 +13,7 @@ type Text struct { } func (t *Text) Template() string { - return "{{ .Text }}" + return " {{ .Text }} " } func (t *Text) Enabled() bool { diff --git a/src/segments/time.go b/src/segments/time.go index 7ad80b34..19f22e5f 100644 --- a/src/segments/time.go +++ b/src/segments/time.go @@ -20,7 +20,7 @@ const ( ) func (t *Time) Template() string { - return "{{ .CurrentDate | date .Format }}" + return " {{ .CurrentDate | date .Format }} " } func (t *Time) Enabled() bool { diff --git a/src/segments/wakatime.go b/src/segments/wakatime.go index b7d8f17f..0c38acca 100644 --- a/src/segments/wakatime.go +++ b/src/segments/wakatime.go @@ -25,7 +25,7 @@ type wtData struct { } func (w *Wakatime) Template() string { - return "{{ secondsRound .CummulativeTotal.Seconds }}" + return " {{ secondsRound .CummulativeTotal.Seconds }} " } func (w *Wakatime) Enabled() bool { diff --git a/src/segments/wifi.go b/src/segments/wifi.go index b610fa61..b5d265dd 100644 --- a/src/segments/wifi.go +++ b/src/segments/wifi.go @@ -15,7 +15,7 @@ type Wifi struct { } const ( - defaultTemplate = "{{ if .Error }}{{ .Error }}{{ else }}\uFAA8 {{ .SSID }} {{ .Signal }}% {{ .ReceiveRate }}Mbps{{ end }}" + defaultTemplate = " {{ if .Error }}{{ .Error }}{{ else }}\uFAA8 {{ .SSID }} {{ .Signal }}% {{ .ReceiveRate }}Mbps{{ end }} " ) func (w *Wifi) Template() string { diff --git a/src/segments/winreg.go b/src/segments/winreg.go index 0e9d1156..3d529040 100644 --- a/src/segments/winreg.go +++ b/src/segments/winreg.go @@ -22,7 +22,7 @@ const ( ) func (wr *WindowsRegistry) Template() string { - return "{{ .Value }}" + return " {{ .Value }} " } func (wr *WindowsRegistry) Init(props properties.Properties, env environment.Environment) { diff --git a/src/segments/ytm.go b/src/segments/ytm.go index f8b0fd25..a39389cb 100644 --- a/src/segments/ytm.go +++ b/src/segments/ytm.go @@ -19,7 +19,7 @@ const ( ) func (y *Ytm) Template() string { - return "{{ .Icon }}{{ if ne .Status \"stopped\" }}{{ .Artist }} - {{ .Track }}{{ end }}" + return " {{ .Icon }}{{ if ne .Status \"stopped\" }}{{ .Artist }} - {{ .Track }}{{ end }} " } func (y *Ytm) Enabled() bool {