mirror of
https://github.com/JanDeDobbeleer/oh-my-posh.git
synced 2024-09-19 21:17:31 -07:00
refactor: move segments to module
This commit is contained in:
parent
4e17e4a853
commit
9e7abe4541
|
@ -6,7 +6,7 @@ sidebar_label: Add Segment
|
|||
|
||||
## Create the logic
|
||||
|
||||
Add a new file following this convention: `new_segment.go`.
|
||||
Add a new file in the `./src/segments` folder: `new.go`.
|
||||
Ensure `New` is a single verb indicating the context the segment renders.
|
||||
|
||||
You can use the following template as a guide.
|
||||
|
@ -50,7 +50,7 @@ This will facilitate the review process as not all environments display the icon
|
|||
You can find these values and query for icons easily at [Nerd Fonts][nf-icons].
|
||||
|
||||
For each segment, there's a single test file ensuring the functionality going forward. The convention
|
||||
is `new_segment_test.go`, have a look at [existing segment tests][tests] for inspiration. Oh My Posh makes
|
||||
is `new_test.go`, have a look at [existing segment tests][tests] for inspiration. Oh My Posh makes
|
||||
use of the test tables pattern for all newly added tests. See [this][tables] blog post for more information.
|
||||
|
||||
## Create a name for your Segment
|
||||
|
@ -168,5 +168,5 @@ And be patient, I'm going as fast as I can 🏎
|
|||
[docs]: https://github.com/JanDeDobbeleer/oh-my-posh/tree/main/docs/docs
|
||||
[sidebars]: https://github.com/JanDeDobbeleer/oh-my-posh/blob/main/docs/sidebars.js
|
||||
[nf-icons]: https://www.nerdfonts.com/cheat-sheet
|
||||
[tests]: hhttps://github.com/JanDeDobbeleer/oh-my-posh/blob/main/src/segment_az_test.go
|
||||
[tests]: hhttps://github.com/JanDeDobbeleer/oh-my-posh/blob/main/src/segments/az_test.go
|
||||
[tables]: https://blog.alexellis.io/golang-writing-unit-tests/
|
||||
|
|
|
@ -10,6 +10,7 @@ import (
|
|||
"oh-my-posh/color"
|
||||
"oh-my-posh/environment"
|
||||
"oh-my-posh/properties"
|
||||
"oh-my-posh/segments"
|
||||
"os"
|
||||
"strconv"
|
||||
"strings"
|
||||
|
@ -48,15 +49,6 @@ type TransientPrompt struct {
|
|||
Foreground string `config:"foreground"`
|
||||
}
|
||||
|
||||
const (
|
||||
// HTTPTimeout timeout used when executing http request
|
||||
HTTPTimeout properties.Property = "http_timeout"
|
||||
// DefaultHTTPTimeout default timeout used when executing http request
|
||||
DefaultHTTPTimeout = 20
|
||||
// DefaultCacheTimeout default timeout used when caching data
|
||||
DefaultCacheTimeout = 10
|
||||
)
|
||||
|
||||
func printConfigError(err error, eval bool) {
|
||||
if eval {
|
||||
fmt.Println("echo \"Oh My Posh Error:\n\"", err.Error())
|
||||
|
@ -208,8 +200,8 @@ func getDefaultConfig(info string) *Config {
|
|||
Background: "#fffb38",
|
||||
Foreground: "#193549",
|
||||
Properties: properties.Map{
|
||||
FetchStashCount: true,
|
||||
FetchUpstreamIcon: true,
|
||||
segments.FetchStashCount: true,
|
||||
segments.FetchUpstreamIcon: true,
|
||||
},
|
||||
},
|
||||
{
|
||||
|
|
|
@ -1,9 +1,11 @@
|
|||
package main
|
||||
|
||||
import (
|
||||
"oh-my-posh/segments"
|
||||
"testing"
|
||||
|
||||
"github.com/gookit/config/v2"
|
||||
"github.com/mitchellh/mapstructure"
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
|
@ -17,3 +19,29 @@ func TestSettingsExportJSON(t *testing.T) {
|
|||
func testClearDefaultConfig() {
|
||||
config.Default().ClearAll()
|
||||
}
|
||||
|
||||
func TestParseMappedLocations(t *testing.T) {
|
||||
defer testClearDefaultConfig()
|
||||
cases := []struct {
|
||||
Case string
|
||||
JSON string
|
||||
}{
|
||||
{Case: "new format", JSON: `{ "properties": { "mapped_locations": {"folder1": "one","folder2": "two"} } }`},
|
||||
{Case: "old format", JSON: `{ "properties": { "mapped_locations": [["folder1", "one"], ["folder2", "two"]] } }`},
|
||||
}
|
||||
for _, tc := range cases {
|
||||
config.ClearAll()
|
||||
config.WithOptions(func(opt *config.Options) {
|
||||
opt.DecoderConfig = &mapstructure.DecoderConfig{
|
||||
TagName: "config",
|
||||
}
|
||||
})
|
||||
err := config.LoadStrings(config.JSON, tc.JSON)
|
||||
assert.NoError(t, err)
|
||||
var segment Segment
|
||||
err = config.BindStruct("", &segment)
|
||||
assert.NoError(t, err)
|
||||
mappedLocations := segment.Properties.GetKeyValueMap(segments.MappedLocations, make(map[string]string))
|
||||
assert.Equal(t, "two", mappedLocations["folder2"])
|
||||
}
|
||||
}
|
||||
|
|
|
@ -3,6 +3,7 @@ package main
|
|||
import (
|
||||
"oh-my-posh/color"
|
||||
"oh-my-posh/environment"
|
||||
"oh-my-posh/template"
|
||||
"strings"
|
||||
)
|
||||
|
||||
|
@ -41,11 +42,11 @@ func (t *consoleTitle) getConsoleTitle() string {
|
|||
}
|
||||
|
||||
func (t *consoleTitle) getTemplateText() string {
|
||||
template := &textTemplate{
|
||||
tmpl := &template.Text{
|
||||
Template: t.config.ConsoleTitleTemplate,
|
||||
Env: t.env,
|
||||
}
|
||||
if text, err := template.render(); err == nil {
|
||||
if text, err := tmpl.Render(); err == nil {
|
||||
return text
|
||||
}
|
||||
return ""
|
||||
|
|
7
src/constants/constants_unix.go
Normal file
7
src/constants/constants_unix.go
Normal file
|
@ -0,0 +1,7 @@
|
|||
//go:build !windows
|
||||
|
||||
package constants
|
||||
|
||||
const (
|
||||
DotnetExitCode = 142
|
||||
)
|
7
src/constants/constants_windows64.go
Normal file
7
src/constants/constants_windows64.go
Normal file
|
@ -0,0 +1,7 @@
|
|||
//go:build windows && !386
|
||||
|
||||
package constants
|
||||
|
||||
const (
|
||||
DotnetExitCode = int(0x80008091)
|
||||
)
|
7
src/constants/constrants_windows386.go
Normal file
7
src/constants/constrants_windows386.go
Normal file
|
@ -0,0 +1,7 @@
|
|||
//go:build windows && 386
|
||||
|
||||
package constants
|
||||
|
||||
const (
|
||||
DotnetExitCode = -2147450735
|
||||
)
|
|
@ -1,7 +0,0 @@
|
|||
//go:build !windows
|
||||
|
||||
package main
|
||||
|
||||
const (
|
||||
dotnetExitCode = 142
|
||||
)
|
|
@ -1,7 +0,0 @@
|
|||
//go:build windows && !386
|
||||
|
||||
package main
|
||||
|
||||
const (
|
||||
dotnetExitCode = int(0x80008091)
|
||||
)
|
|
@ -1,7 +0,0 @@
|
|||
//go:build windows && 386
|
||||
|
||||
package main
|
||||
|
||||
const (
|
||||
dotnetExitCode = -2147450735
|
||||
)
|
|
@ -4,6 +4,7 @@ import (
|
|||
"fmt"
|
||||
"oh-my-posh/color"
|
||||
"oh-my-posh/environment"
|
||||
"oh-my-posh/template"
|
||||
"strings"
|
||||
"time"
|
||||
)
|
||||
|
@ -240,11 +241,11 @@ func (e *engine) renderTransientPrompt() string {
|
|||
if len(promptTemplate) == 0 {
|
||||
promptTemplate = "{{ .Shell }}> "
|
||||
}
|
||||
template := &textTemplate{
|
||||
tmpl := &template.Text{
|
||||
Template: promptTemplate,
|
||||
Env: e.env,
|
||||
}
|
||||
prompt, err := template.render()
|
||||
prompt, err := tmpl.Render()
|
||||
if err != nil {
|
||||
prompt = err.Error()
|
||||
}
|
||||
|
|
|
@ -7,6 +7,7 @@ import (
|
|||
"oh-my-posh/color"
|
||||
"oh-my-posh/environment"
|
||||
"oh-my-posh/regex"
|
||||
"oh-my-posh/template"
|
||||
"os"
|
||||
"strings"
|
||||
"time"
|
||||
|
@ -311,12 +312,12 @@ func getConsoleBackgroundColor(env environment.Environment, backgroundColorTempl
|
|||
if len(backgroundColorTemplate) == 0 {
|
||||
return backgroundColorTemplate
|
||||
}
|
||||
template := &textTemplate{
|
||||
tmpl := &template.Text{
|
||||
Template: backgroundColorTemplate,
|
||||
Context: nil,
|
||||
Env: env,
|
||||
}
|
||||
text, err := template.render()
|
||||
text, err := tmpl.Render()
|
||||
if err != nil {
|
||||
return err.Error()
|
||||
}
|
||||
|
|
100
src/segment.go
100
src/segment.go
|
@ -5,6 +5,8 @@ import (
|
|||
"fmt"
|
||||
"oh-my-posh/environment"
|
||||
"oh-my-posh/properties"
|
||||
"oh-my-posh/segments"
|
||||
"oh-my-posh/template"
|
||||
"runtime/debug"
|
||||
"time"
|
||||
)
|
||||
|
@ -148,12 +150,12 @@ const (
|
|||
)
|
||||
|
||||
func (segment *Segment) string() string {
|
||||
template := &textTemplate{
|
||||
tmpl := &template.Text{
|
||||
Template: segment.writer.Template(),
|
||||
Context: segment.writer,
|
||||
Env: segment.env,
|
||||
}
|
||||
text, err := template.render()
|
||||
text, err := tmpl.Render()
|
||||
if err != nil {
|
||||
return err.Error()
|
||||
}
|
||||
|
@ -208,13 +210,13 @@ func (segment *Segment) getColor(templates []string, defaultColor string) string
|
|||
if len(templates) == 0 {
|
||||
return defaultColor
|
||||
}
|
||||
txtTemplate := &textTemplate{
|
||||
txtTemplate := &template.Text{
|
||||
Context: segment.writer,
|
||||
Env: segment.env,
|
||||
}
|
||||
for _, template := range templates {
|
||||
txtTemplate.Template = template
|
||||
value, err := txtTemplate.render()
|
||||
for _, tmpl := range templates {
|
||||
txtTemplate.Template = tmpl
|
||||
value, err := txtTemplate.Render()
|
||||
if err != nil || value == "" {
|
||||
continue
|
||||
}
|
||||
|
@ -243,49 +245,49 @@ func (segment *Segment) background() string {
|
|||
func (segment *Segment) mapSegmentWithWriter(env environment.Environment) error {
|
||||
segment.env = env
|
||||
functions := map[SegmentType]SegmentWriter{
|
||||
OWM: &Owm{},
|
||||
SESSION: &Session{},
|
||||
PATH: &Path{},
|
||||
GIT: &Git{},
|
||||
PLASTIC: &Plastic{},
|
||||
EXIT: &Exit{},
|
||||
PYTHON: &Python{},
|
||||
ROOT: &Root{},
|
||||
TEXT: &Text{},
|
||||
TIME: &Time{},
|
||||
CMD: &Cmd{},
|
||||
BATTERY: &Battery{},
|
||||
SPOTIFY: &Spotify{},
|
||||
SHELL: &Shell{},
|
||||
NODE: &Node{},
|
||||
OS: &Os{},
|
||||
AZ: &Az{},
|
||||
KUBECTL: &Kubectl{},
|
||||
DOTNET: &Dotnet{},
|
||||
TERRAFORM: &Terraform{},
|
||||
GOLANG: &Golang{},
|
||||
JULIA: &Julia{},
|
||||
YTM: &Ytm{},
|
||||
EXECUTIONTIME: &Executiontime{},
|
||||
RUBY: &Ruby{},
|
||||
AWS: &Aws{},
|
||||
JAVA: &Java{},
|
||||
POSHGIT: &PoshGit{},
|
||||
AZFUNC: &AzFunc{},
|
||||
CRYSTAL: &Crystal{},
|
||||
DART: &Dart{},
|
||||
NBGV: &Nbgv{},
|
||||
RUST: &Rust{},
|
||||
SYSTEMINFO: &SystemInfo{},
|
||||
ANGULAR: &Angular{},
|
||||
PHP: &Php{},
|
||||
NIGHTSCOUT: &Nightscout{},
|
||||
STRAVA: &Strava{},
|
||||
WAKATIME: &Wakatime{},
|
||||
WIFI: &Wifi{},
|
||||
WINREG: &WindowsRegistry{},
|
||||
BREWFATHER: &Brewfather{},
|
||||
IPIFY: &IPify{},
|
||||
OWM: &segments.Owm{},
|
||||
SESSION: &segments.Session{},
|
||||
PATH: &segments.Path{},
|
||||
GIT: &segments.Git{},
|
||||
PLASTIC: &segments.Plastic{},
|
||||
EXIT: &segments.Exit{},
|
||||
PYTHON: &segments.Python{},
|
||||
ROOT: &segments.Root{},
|
||||
TEXT: &segments.Text{},
|
||||
TIME: &segments.Time{},
|
||||
CMD: &segments.Cmd{},
|
||||
BATTERY: &segments.Battery{},
|
||||
SPOTIFY: &segments.Spotify{},
|
||||
SHELL: &segments.Shell{},
|
||||
NODE: &segments.Node{},
|
||||
OS: &segments.Os{},
|
||||
AZ: &segments.Az{},
|
||||
KUBECTL: &segments.Kubectl{},
|
||||
DOTNET: &segments.Dotnet{},
|
||||
TERRAFORM: &segments.Terraform{},
|
||||
GOLANG: &segments.Golang{},
|
||||
JULIA: &segments.Julia{},
|
||||
YTM: &segments.Ytm{},
|
||||
EXECUTIONTIME: &segments.Executiontime{},
|
||||
RUBY: &segments.Ruby{},
|
||||
AWS: &segments.Aws{},
|
||||
JAVA: &segments.Java{},
|
||||
POSHGIT: &segments.PoshGit{},
|
||||
AZFUNC: &segments.AzFunc{},
|
||||
CRYSTAL: &segments.Crystal{},
|
||||
DART: &segments.Dart{},
|
||||
NBGV: &segments.Nbgv{},
|
||||
RUST: &segments.Rust{},
|
||||
SYSTEMINFO: &segments.SystemInfo{},
|
||||
ANGULAR: &segments.Angular{},
|
||||
PHP: &segments.Php{},
|
||||
NIGHTSCOUT: &segments.Nightscout{},
|
||||
STRAVA: &segments.Strava{},
|
||||
WAKATIME: &segments.Wakatime{},
|
||||
WIFI: &segments.Wifi{},
|
||||
WINREG: &segments.WindowsRegistry{},
|
||||
BREWFATHER: &segments.Brewfather{},
|
||||
IPIFY: &segments.IPify{},
|
||||
}
|
||||
if segment.Properties == nil {
|
||||
segment.Properties = make(properties.Map)
|
||||
|
|
|
@ -5,6 +5,7 @@ import (
|
|||
"oh-my-posh/environment"
|
||||
"oh-my-posh/mock"
|
||||
"oh-my-posh/properties"
|
||||
"oh-my-posh/segments"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
|
@ -198,7 +199,7 @@ func TestGetColors(t *testing.T) {
|
|||
Env: make(map[string]string),
|
||||
})
|
||||
segment := &Segment{
|
||||
writer: &Aws{
|
||||
writer: &segments.Aws{
|
||||
Profile: tc.Profile,
|
||||
Region: tc.Region,
|
||||
},
|
||||
|
|
|
@ -1,4 +1,4 @@
|
|||
package main
|
||||
package segments
|
||||
|
||||
import (
|
||||
"encoding/json"
|
|
@ -1,4 +1,4 @@
|
|||
package main
|
||||
package segments
|
||||
|
||||
import (
|
||||
"fmt"
|
|
@ -1,4 +1,4 @@
|
|||
package main
|
||||
package segments
|
||||
|
||||
import (
|
||||
"fmt"
|
|
@ -1,8 +1,9 @@
|
|||
package main
|
||||
package segments
|
||||
|
||||
import (
|
||||
"oh-my-posh/mock"
|
||||
"oh-my-posh/properties"
|
||||
"oh-my-posh/template"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
|
@ -44,7 +45,7 @@ func TestAWSSegment(t *testing.T) {
|
|||
Region: "eu-west",
|
||||
Template: "profile: {{.Profile}}{{if .Region}} in {{.Region}}{{end}}",
|
||||
},
|
||||
{Case: "template: invalid", ExpectedString: invalidTemplate, ExpectedEnabled: true, Profile: "c", Template: "{{ .Burp"},
|
||||
{Case: "template: invalid", ExpectedString: template.InvalidTemplate, ExpectedEnabled: true, Profile: "c", Template: "{{ .Burp"},
|
||||
}
|
||||
|
||||
for _, tc := range cases {
|
|
@ -1,4 +1,4 @@
|
|||
package main
|
||||
package segments
|
||||
|
||||
import (
|
||||
"encoding/json"
|
|
@ -1,4 +1,4 @@
|
|||
package main
|
||||
package segments
|
||||
|
||||
import (
|
||||
"oh-my-posh/environment"
|
|
@ -1,10 +1,11 @@
|
|||
package main
|
||||
package segments
|
||||
|
||||
import (
|
||||
"io/ioutil"
|
||||
"oh-my-posh/environment"
|
||||
"oh-my-posh/mock"
|
||||
"oh-my-posh/properties"
|
||||
"oh-my-posh/template"
|
||||
"path/filepath"
|
||||
"testing"
|
||||
|
||||
|
@ -49,7 +50,7 @@ func TestAzSegment(t *testing.T) {
|
|||
{
|
||||
Case: "Faulty template",
|
||||
ExpectedEnabled: true,
|
||||
ExpectedString: incorrectTemplate,
|
||||
ExpectedString: template.IncorrectTemplate,
|
||||
Template: "{{ .Burp }}",
|
||||
HasPowerShell: true,
|
||||
},
|
||||
|
@ -75,15 +76,15 @@ func TestAzSegment(t *testing.T) {
|
|||
env.On("Home").Return(home)
|
||||
var azureProfile, azureRmContext, azureRMContext string
|
||||
if tc.HasCLI {
|
||||
content, _ := ioutil.ReadFile("./test/azureProfile.json")
|
||||
content, _ := ioutil.ReadFile("../test/azureProfile.json")
|
||||
azureProfile = string(content)
|
||||
}
|
||||
if tc.HasPowerShell {
|
||||
content, _ := ioutil.ReadFile("./test/AzureRmContext.json")
|
||||
content, _ := ioutil.ReadFile("../test/AzureRmContext.json")
|
||||
azureRmContext = string(content)
|
||||
}
|
||||
if tc.HasPowerShellUnix {
|
||||
content, _ := ioutil.ReadFile("./test/AzureRmContext.json")
|
||||
content, _ := ioutil.ReadFile("../test/AzureRmContext.json")
|
||||
azureRMContext = string(content)
|
||||
}
|
||||
env.On("GOOS").Return(environment.LinuxPlatform)
|
|
@ -1,4 +1,4 @@
|
|||
package main
|
||||
package segments
|
||||
|
||||
import (
|
||||
"math"
|
|
@ -1,4 +1,4 @@
|
|||
package main
|
||||
package segments
|
||||
|
||||
import (
|
||||
"testing"
|
|
@ -1,4 +1,4 @@
|
|||
package main
|
||||
package segments
|
||||
|
||||
import (
|
||||
"encoding/base64"
|
|
@ -1,4 +1,4 @@
|
|||
package main
|
||||
package segments
|
||||
|
||||
import (
|
||||
"fmt"
|
|
@ -1,4 +1,4 @@
|
|||
package main
|
||||
package segments
|
||||
|
||||
import (
|
||||
"oh-my-posh/environment"
|
|
@ -1,4 +1,4 @@
|
|||
package main
|
||||
package segments
|
||||
|
||||
import (
|
||||
"oh-my-posh/mock"
|
|
@ -1,4 +1,4 @@
|
|||
package main
|
||||
package segments
|
||||
|
||||
import (
|
||||
"oh-my-posh/environment"
|
|
@ -1,4 +1,4 @@
|
|||
package main
|
||||
package segments
|
||||
|
||||
import (
|
||||
"fmt"
|
|
@ -1,4 +1,4 @@
|
|||
package main
|
||||
package segments
|
||||
|
||||
import (
|
||||
"oh-my-posh/environment"
|
|
@ -1,4 +1,4 @@
|
|||
package main
|
||||
package segments
|
||||
|
||||
import (
|
||||
"fmt"
|
|
@ -1,6 +1,7 @@
|
|||
package main
|
||||
package segments
|
||||
|
||||
import (
|
||||
"oh-my-posh/constants"
|
||||
"oh-my-posh/environment"
|
||||
"oh-my-posh/properties"
|
||||
)
|
||||
|
@ -37,6 +38,6 @@ func (d *Dotnet) Enabled() bool {
|
|||
if !enabled {
|
||||
return false
|
||||
}
|
||||
d.Unsupported = d.language.exitCode == dotnetExitCode
|
||||
d.Unsupported = d.language.exitCode == constants.DotnetExitCode
|
||||
return true
|
||||
}
|
|
@ -1,6 +1,7 @@
|
|||
package main
|
||||
package segments
|
||||
|
||||
import (
|
||||
"oh-my-posh/constants"
|
||||
"oh-my-posh/environment"
|
||||
"oh-my-posh/mock"
|
||||
"oh-my-posh/properties"
|
||||
|
@ -18,7 +19,7 @@ func TestDotnetSegment(t *testing.T) {
|
|||
Version string
|
||||
FetchVersion bool
|
||||
}{
|
||||
{Case: "Unsupported version", Expected: "\uf071", HasCommand: true, FetchVersion: true, ExitCode: dotnetExitCode, Version: "3.1.402"},
|
||||
{Case: "Unsupported version", Expected: "\uf071", HasCommand: true, FetchVersion: true, ExitCode: constants.DotnetExitCode, Version: "3.1.402"},
|
||||
{Case: "Regular version", Expected: "3.1.402", HasCommand: true, FetchVersion: true, Version: "3.1.402"},
|
||||
{Case: "Regular version", Expected: "", HasCommand: true, FetchVersion: false, Version: "3.1.402"},
|
||||
{Case: "Regular version", Expected: "", HasCommand: false, FetchVersion: false, Version: "3.1.402"},
|
|
@ -1,4 +1,4 @@
|
|||
package main
|
||||
package segments
|
||||
|
||||
import (
|
||||
"fmt"
|
|
@ -1,4 +1,4 @@
|
|||
package main
|
||||
package segments
|
||||
|
||||
import (
|
||||
"oh-my-posh/mock"
|
|
@ -1,4 +1,4 @@
|
|||
package main
|
||||
package segments
|
||||
|
||||
import (
|
||||
"oh-my-posh/environment"
|
|
@ -1,4 +1,4 @@
|
|||
package main
|
||||
package segments
|
||||
|
||||
import (
|
||||
"oh-my-posh/environment"
|
|
@ -1,4 +1,4 @@
|
|||
package main
|
||||
package segments
|
||||
|
||||
import (
|
||||
"fmt"
|
|
@ -1,4 +1,4 @@
|
|||
package main
|
||||
package segments
|
||||
|
||||
import (
|
||||
"fmt"
|
|
@ -1,4 +1,4 @@
|
|||
package main
|
||||
package segments
|
||||
|
||||
import (
|
||||
"oh-my-posh/environment"
|
|
@ -1,4 +1,4 @@
|
|||
package main
|
||||
package segments
|
||||
|
||||
import (
|
||||
"errors"
|
||||
|
@ -53,7 +53,7 @@ func TestGolang(t *testing.T) {
|
|||
ParseModFile: true,
|
||||
HasModFileInParentDir: true,
|
||||
InvalidModfile: true,
|
||||
ExpectedString: "./go.mod:1: unknown directive: invalid",
|
||||
ExpectedString: "../go.mod:1: unknown directive: invalid",
|
||||
Version: "go version go1.16 darwin/amd64",
|
||||
},
|
||||
}
|
||||
|
@ -68,7 +68,7 @@ func TestGolang(t *testing.T) {
|
|||
if tc.ParseModFile {
|
||||
props[ParseModFile] = tc.ParseModFile
|
||||
fileInfo := &environment.FileInfo{
|
||||
Path: "./go.mod",
|
||||
Path: "../go.mod",
|
||||
ParentFolder: "./",
|
||||
IsDir: false,
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
package main
|
||||
package segments
|
||||
|
||||
import (
|
||||
"oh-my-posh/environment"
|
|
@ -1,4 +1,4 @@
|
|||
package main
|
||||
package segments
|
||||
|
||||
import (
|
||||
"errors"
|
|
@ -1,4 +1,4 @@
|
|||
package main
|
||||
package segments
|
||||
|
||||
import (
|
||||
"fmt"
|
|
@ -1,4 +1,4 @@
|
|||
package main
|
||||
package segments
|
||||
|
||||
import (
|
||||
"fmt"
|
|
@ -1,4 +1,4 @@
|
|||
package main
|
||||
package segments
|
||||
|
||||
import (
|
||||
"oh-my-posh/environment"
|
|
@ -1,4 +1,4 @@
|
|||
package main
|
||||
package segments
|
||||
|
||||
import (
|
||||
"fmt"
|
|
@ -1,4 +1,4 @@
|
|||
package main
|
||||
package segments
|
||||
|
||||
import (
|
||||
"oh-my-posh/environment"
|
|
@ -1,4 +1,4 @@
|
|||
package main
|
||||
package segments
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
@ -111,7 +111,7 @@ func TestKubectlSegment(t *testing.T) {
|
|||
env := new(mock.MockedEnvironment)
|
||||
env.On("HasCommand", "kubectl").Return(tc.KubectlExists)
|
||||
var kubeconfig string
|
||||
content, err := ioutil.ReadFile("./test/kubectl.yml")
|
||||
content, err := ioutil.ReadFile("../test/kubectl.yml")
|
||||
if err == nil {
|
||||
kubeconfig = fmt.Sprintf(string(content), tc.Cluster, tc.UserName, tc.Namespace, tc.Context)
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
package main
|
||||
package segments
|
||||
|
||||
import (
|
||||
"errors"
|
||||
|
@ -6,6 +6,7 @@ import (
|
|||
"oh-my-posh/environment"
|
||||
"oh-my-posh/properties"
|
||||
"oh-my-posh/regex"
|
||||
"oh-my-posh/template"
|
||||
)
|
||||
|
||||
const (
|
||||
|
@ -196,12 +197,12 @@ func (l *language) buildVersionURL() {
|
|||
if len(versionURLTemplate) == 0 {
|
||||
return
|
||||
}
|
||||
template := &textTemplate{
|
||||
tmpl := &template.Text{
|
||||
Template: versionURLTemplate,
|
||||
Context: l.version,
|
||||
Env: l.env,
|
||||
}
|
||||
url, err := template.render()
|
||||
url, err := tmpl.Render()
|
||||
if err != nil {
|
||||
return
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
package main
|
||||
package segments
|
||||
|
||||
import (
|
||||
"oh-my-posh/environment"
|
|
@ -1,4 +1,4 @@
|
|||
package main
|
||||
package segments
|
||||
|
||||
import (
|
||||
"encoding/json"
|
|
@ -1,4 +1,4 @@
|
|||
package main
|
||||
package segments
|
||||
|
||||
import (
|
||||
"errors"
|
|
@ -1,4 +1,4 @@
|
|||
package main
|
||||
package segments
|
||||
|
||||
import (
|
||||
"encoding/json"
|
|
@ -1,9 +1,10 @@
|
|||
package main
|
||||
package segments
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"oh-my-posh/mock"
|
||||
"oh-my-posh/properties"
|
||||
"oh-my-posh/template"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
|
@ -124,7 +125,7 @@ func TestNSSegment(t *testing.T) {
|
|||
JSONResponse: `
|
||||
[{"sgv":50,"direction":"DoubleDown"}]`,
|
||||
Template: " {{.Sgv}}{{.Burp}}",
|
||||
ExpectedString: incorrectTemplate,
|
||||
ExpectedString: template.IncorrectTemplate,
|
||||
ExpectedEnabled: true,
|
||||
CacheTimeout: 10,
|
||||
},
|
|
@ -1,4 +1,4 @@
|
|||
package main
|
||||
package segments
|
||||
|
||||
import (
|
||||
"fmt"
|
|
@ -1,4 +1,4 @@
|
|||
package main
|
||||
package segments
|
||||
|
||||
import (
|
||||
"oh-my-posh/mock"
|
|
@ -1,4 +1,4 @@
|
|||
package main
|
||||
package segments
|
||||
|
||||
import (
|
||||
"oh-my-posh/environment"
|
|
@ -1,4 +1,4 @@
|
|||
package main
|
||||
package segments
|
||||
|
||||
import (
|
||||
"oh-my-posh/environment"
|
|
@ -1,4 +1,4 @@
|
|||
package main
|
||||
package segments
|
||||
|
||||
import (
|
||||
"encoding/json"
|
|
@ -1,4 +1,4 @@
|
|||
package main
|
||||
package segments
|
||||
|
||||
import (
|
||||
"errors"
|
|
@ -1,4 +1,4 @@
|
|||
package main
|
||||
package segments
|
||||
|
||||
import (
|
||||
"fmt"
|
|
@ -1,13 +1,12 @@
|
|||
package main
|
||||
package segments
|
||||
|
||||
import (
|
||||
"oh-my-posh/environment"
|
||||
"oh-my-posh/mock"
|
||||
"oh-my-posh/properties"
|
||||
"oh-my-posh/template"
|
||||
"testing"
|
||||
|
||||
"github.com/gookit/config/v2"
|
||||
"github.com/mitchellh/mapstructure"
|
||||
"github.com/stretchr/testify/assert"
|
||||
)
|
||||
|
||||
|
@ -24,12 +23,12 @@ func renderTemplate(env *mock.MockedEnvironment, segmentTemplate string, context
|
|||
Env: make(map[string]string),
|
||||
})
|
||||
}
|
||||
template := &textTemplate{
|
||||
tmpl := &template.Text{
|
||||
Template: segmentTemplate,
|
||||
Context: context,
|
||||
Env: env,
|
||||
}
|
||||
text, err := template.render()
|
||||
text, err := tmpl.Render()
|
||||
if err != nil {
|
||||
return err.Error()
|
||||
}
|
||||
|
@ -628,29 +627,3 @@ func TestGetPwd(t *testing.T) {
|
|||
assert.Equal(t, tc.Expected, got)
|
||||
}
|
||||
}
|
||||
|
||||
func TestParseMappedLocations(t *testing.T) {
|
||||
defer testClearDefaultConfig()
|
||||
cases := []struct {
|
||||
Case string
|
||||
JSON string
|
||||
}{
|
||||
{Case: "new format", JSON: `{ "properties": { "mapped_locations": {"folder1": "one","folder2": "two"} } }`},
|
||||
{Case: "old format", JSON: `{ "properties": { "mapped_locations": [["folder1", "one"], ["folder2", "two"]] } }`},
|
||||
}
|
||||
for _, tc := range cases {
|
||||
config.ClearAll()
|
||||
config.WithOptions(func(opt *config.Options) {
|
||||
opt.DecoderConfig = &mapstructure.DecoderConfig{
|
||||
TagName: "config",
|
||||
}
|
||||
})
|
||||
err := config.LoadStrings(config.JSON, tc.JSON)
|
||||
assert.NoError(t, err)
|
||||
var segment Segment
|
||||
err = config.BindStruct("", &segment)
|
||||
assert.NoError(t, err)
|
||||
mappedLocations := segment.Properties.GetKeyValueMap(MappedLocations, make(map[string]string))
|
||||
assert.Equal(t, "two", mappedLocations["folder2"])
|
||||
}
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
package main
|
||||
package segments
|
||||
|
||||
import (
|
||||
"oh-my-posh/environment"
|
|
@ -1,4 +1,4 @@
|
|||
package main
|
||||
package segments
|
||||
|
||||
import (
|
||||
"fmt"
|
|
@ -1,4 +1,4 @@
|
|||
package main
|
||||
package segments
|
||||
|
||||
import (
|
||||
"fmt"
|
|
@ -1,4 +1,4 @@
|
|||
package main
|
||||
package segments
|
||||
|
||||
import (
|
||||
"oh-my-posh/environment"
|
|
@ -1,4 +1,4 @@
|
|||
package main
|
||||
package segments
|
||||
|
||||
import (
|
||||
"oh-my-posh/environment"
|
|
@ -1,4 +1,4 @@
|
|||
package main
|
||||
package segments
|
||||
|
||||
import (
|
||||
"oh-my-posh/mock"
|
12
src/segments/properties.go
Normal file
12
src/segments/properties.go
Normal file
|
@ -0,0 +1,12 @@
|
|||
package segments
|
||||
|
||||
import "oh-my-posh/properties"
|
||||
|
||||
const (
|
||||
// HTTPTimeout timeout used when executing http request
|
||||
HTTPTimeout properties.Property = "http_timeout"
|
||||
// DefaultHTTPTimeout default timeout used when executing http request
|
||||
DefaultHTTPTimeout = 20
|
||||
// DefaultCacheTimeout default timeout used when caching data
|
||||
DefaultCacheTimeout = 10
|
||||
)
|
|
@ -1,4 +1,4 @@
|
|||
package main
|
||||
package segments
|
||||
|
||||
import (
|
||||
"oh-my-posh/environment"
|
|
@ -1,4 +1,4 @@
|
|||
package main
|
||||
package segments
|
||||
|
||||
import (
|
||||
"oh-my-posh/environment"
|
|
@ -1,4 +1,4 @@
|
|||
package main
|
||||
package segments
|
||||
|
||||
import (
|
||||
"oh-my-posh/environment"
|
|
@ -1,4 +1,4 @@
|
|||
package main
|
||||
package segments
|
||||
|
||||
import (
|
||||
"oh-my-posh/environment"
|
|
@ -1,4 +1,4 @@
|
|||
package main
|
||||
package segments
|
||||
|
||||
import (
|
||||
"fmt"
|
|
@ -1,4 +1,4 @@
|
|||
package main
|
||||
package segments
|
||||
|
||||
import (
|
||||
"oh-my-posh/environment"
|
|
@ -1,4 +1,4 @@
|
|||
package main
|
||||
package segments
|
||||
|
||||
import (
|
||||
"fmt"
|
|
@ -1,4 +1,4 @@
|
|||
package main
|
||||
package segments
|
||||
|
||||
import (
|
||||
"fmt"
|
|
@ -1,4 +1,4 @@
|
|||
package main
|
||||
package segments
|
||||
|
||||
import (
|
||||
"oh-my-posh/environment"
|
|
@ -1,4 +1,4 @@
|
|||
package main
|
||||
package segments
|
||||
|
||||
import (
|
||||
"oh-my-posh/environment"
|
|
@ -1,4 +1,4 @@
|
|||
package main
|
||||
package segments
|
||||
|
||||
import (
|
||||
"oh-my-posh/environment"
|
|
@ -1,4 +1,4 @@
|
|||
package main
|
||||
package segments
|
||||
|
||||
import (
|
||||
"oh-my-posh/environment"
|
|
@ -1,4 +1,4 @@
|
|||
package main
|
||||
package segments
|
||||
|
||||
import (
|
||||
"oh-my-posh/mock"
|
|
@ -1,4 +1,4 @@
|
|||
package main
|
||||
package segments
|
||||
|
||||
import (
|
||||
"oh-my-posh/environment"
|
|
@ -1,6 +1,6 @@
|
|||
//go:build darwin
|
||||
|
||||
package main
|
||||
package segments
|
||||
|
||||
func (s *Spotify) Enabled() bool {
|
||||
var err error
|
|
@ -1,6 +1,6 @@
|
|||
//go:build darwin
|
||||
|
||||
package main
|
||||
package segments
|
||||
|
||||
import (
|
||||
"errors"
|
|
@ -1,4 +1,4 @@
|
|||
package main
|
||||
package segments
|
||||
|
||||
import (
|
||||
"oh-my-posh/mock"
|
|
@ -1,6 +1,6 @@
|
|||
//go:build windows
|
||||
|
||||
package main
|
||||
package segments
|
||||
|
||||
import (
|
||||
"strings"
|
|
@ -1,6 +1,6 @@
|
|||
//go:build windows
|
||||
|
||||
package main
|
||||
package segments
|
||||
|
||||
import (
|
||||
"errors"
|
|
@ -1,13 +1,13 @@
|
|||
//go:build !darwin && !windows
|
||||
|
||||
package main
|
||||
package segments
|
||||
|
||||
import (
|
||||
"encoding/csv"
|
||||
"strings"
|
||||
)
|
||||
|
||||
func (s *spotify) Enabled() bool {
|
||||
func (s *Spotify) Enabled() bool {
|
||||
if !s.env.IsWsl() {
|
||||
return false
|
||||
}
|
|
@ -1,6 +1,6 @@
|
|||
//go:build !darwin && !windows
|
||||
|
||||
package main
|
||||
package segments
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
|
@ -57,7 +57,7 @@ func TestSpotifyWsl(t *testing.T) {
|
|||
env := new(mock.MockedEnvironment)
|
||||
env.On("IsWsl").Return(true)
|
||||
env.On("RunCommand", "tasklist.exe", []string{"/V", "/FI", "Imagename eq Spotify.exe", "/FO", "CSV", "/NH"}).Return(tc.ExecOutput, nil)
|
||||
s := &spotify{
|
||||
s := &Spotify{
|
||||
env: env,
|
||||
props: properties.Map{},
|
||||
}
|
|
@ -1,4 +1,4 @@
|
|||
package main
|
||||
package segments
|
||||
|
||||
import (
|
||||
"encoding/json"
|
|
@ -1,10 +1,11 @@
|
|||
package main
|
||||
package segments
|
||||
|
||||
import (
|
||||
"errors"
|
||||
"fmt"
|
||||
"oh-my-posh/mock"
|
||||
"oh-my-posh/properties"
|
||||
"oh-my-posh/template"
|
||||
"testing"
|
||||
"time"
|
||||
|
||||
|
@ -130,7 +131,7 @@ func TestStravaSegment(t *testing.T) {
|
|||
JSONResponse: `
|
||||
[{"sgv":50,"direction":"DoubleDown"}]`,
|
||||
Template: "{{.Ago}}{{.Burp}}",
|
||||
ExpectedString: incorrectTemplate,
|
||||
ExpectedString: template.IncorrectTemplate,
|
||||
ExpectedEnabled: true,
|
||||
CacheTimeout: 10,
|
||||
},
|
|
@ -1,4 +1,4 @@
|
|||
package main
|
||||
package segments
|
||||
|
||||
import (
|
||||
"oh-my-posh/environment"
|
|
@ -1,4 +1,4 @@
|
|||
package main
|
||||
package segments
|
||||
|
||||
import (
|
||||
"oh-my-posh/mock"
|
|
@ -1,4 +1,4 @@
|
|||
package main
|
||||
package segments
|
||||
|
||||
import (
|
||||
"oh-my-posh/environment"
|
|
@ -1,4 +1,4 @@
|
|||
package main
|
||||
package segments
|
||||
|
||||
import (
|
||||
"oh-my-posh/mock"
|
|
@ -1,4 +1,4 @@
|
|||
package main
|
||||
package segments
|
||||
|
||||
import (
|
||||
"oh-my-posh/environment"
|
|
@ -1,4 +1,4 @@
|
|||
package main
|
||||
package segments
|
||||
|
||||
import (
|
||||
"oh-my-posh/environment"
|
|
@ -1,4 +1,4 @@
|
|||
package main
|
||||
package segments
|
||||
|
||||
import (
|
||||
"oh-my-posh/environment"
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue