Skip to content

Commit

Permalink
feat: add OS template property
Browse files Browse the repository at this point in the history
  • Loading branch information
gitolicious committed Apr 24, 2021
1 parent 608b486 commit 52b66d1
Show file tree
Hide file tree
Showing 4 changed files with 21 additions and 2 deletions.
4 changes: 4 additions & 0 deletions docs/docs/segment-os.md
Expand Up @@ -50,3 +50,7 @@ Display OS specific info. Defaults to Icon.
- sabayon: `string` - the icon to use for Sabayon - defaults to Sabayon icon - defaults to `\uF317`
- slackware: `string` - the icon to use for Slackware - defaults to Slackware icon - defaults to `\uF319`
- ubuntu: `string` - the icon to use for Ubuntu - defaults to Ubuntu icon - defaults to `\uF31b`

## Template Properties

- `.OS`: `string` - the OS platform
2 changes: 2 additions & 0 deletions src/environment.go
Expand Up @@ -21,6 +21,8 @@ import (
const (
unknown = "unknown"
windowsPlatform = "windows"
darwinPlatform = "darwin"
linuxPlatform = "linux"
)

type commandError struct {
Expand Down
10 changes: 8 additions & 2 deletions src/segment_os.go
Expand Up @@ -7,6 +7,7 @@ import (
type osInfo struct {
props *properties
env environmentInfo
OS string
}

const (
Expand Down Expand Up @@ -70,20 +71,25 @@ func (n *osInfo) string() string {
goos := n.env.getRuntimeGOOS()
switch goos {
case windowsPlatform:
n.OS = windowsPlatform
return n.props.getString(Windows, "\uE62A")
case "darwin":
case darwinPlatform:
n.OS = darwinPlatform
return n.props.getString(MacOS, "\uF179")
case "linux":
case linuxPlatform:
wsl := n.env.getenv("WSL_DISTRO_NAME")
p := n.env.getPlatform()
if len(wsl) == 0 {
n.OS = p
return n.getDistroName(p, "")
}
n.OS = wsl
return fmt.Sprintf("%s%s%s",
n.props.getString(WSL, "WSL"),
n.props.getString(WSLSeparator, " - "),
n.getDistroName(p, wsl))
default:
n.OS = goos
return goos
}
}
Expand Down
7 changes: 7 additions & 0 deletions src/segment_os_test.go
Expand Up @@ -78,5 +78,12 @@ func TestOSInfo(t *testing.T) {
props: props,
}
assert.Equal(t, tc.ExpectedString, osInfo.string(), tc.Case)
if tc.WSLDistro != "" {
assert.Equal(t, tc.WSLDistro, osInfo.OS, tc.Case)
} else if tc.Platform != "" {
assert.Equal(t, tc.Platform, osInfo.OS, tc.Case)
} else {
assert.Equal(t, tc.GOOS, osInfo.OS, tc.Case)
}
}
}

0 comments on commit 52b66d1

Please sign in to comment.