mirror of
https://github.com/JanDeDobbeleer/oh-my-posh.git
synced 2024-12-27 03:49:40 -08:00
feat: react segment
This commit is contained in:
parent
ed40fc7bf5
commit
b8830a683a
|
@ -208,6 +208,8 @@ const (
|
|||
QUASAR SegmentType = "quasar"
|
||||
// R version
|
||||
R SegmentType = "r"
|
||||
// REACT writes the current react version
|
||||
REACT SegmentType = "react"
|
||||
// ROOT writes root symbol
|
||||
ROOT SegmentType = "root"
|
||||
// RUBY writes which ruby version is currently active
|
||||
|
@ -323,6 +325,7 @@ var Segments = map[SegmentType]func() SegmentWriter{
|
|||
PYTHON: func() SegmentWriter { return &segments.Python{} },
|
||||
QUASAR: func() SegmentWriter { return &segments.Quasar{} },
|
||||
R: func() SegmentWriter { return &segments.R{} },
|
||||
REACT: func() SegmentWriter { return &segments.React{} },
|
||||
ROOT: func() SegmentWriter { return &segments.Root{} },
|
||||
RUBY: func() SegmentWriter { return &segments.Ruby{} },
|
||||
RUST: func() SegmentWriter { return &segments.Rust{} },
|
||||
|
|
38
src/segments/react.go
Normal file
38
src/segments/react.go
Normal file
|
@ -0,0 +1,38 @@
|
|||
package segments
|
||||
|
||||
import (
|
||||
"github.com/jandedobbeleer/oh-my-posh/src/platform"
|
||||
"github.com/jandedobbeleer/oh-my-posh/src/properties"
|
||||
)
|
||||
|
||||
type React struct {
|
||||
language
|
||||
}
|
||||
|
||||
func (r *React) Template() string {
|
||||
return languageTemplate
|
||||
}
|
||||
|
||||
func (r *React) Init(props properties.Properties, env platform.Environment) {
|
||||
r.language = language{
|
||||
env: env,
|
||||
props: props,
|
||||
extensions: []string{"package.json"},
|
||||
commands: []*cmd{
|
||||
{
|
||||
regex: `(?:(?P<version>((?P<major>[0-9]+).(?P<minor>[0-9]+).(?P<patch>[0-9]+))))`,
|
||||
getVersion: r.getVersion,
|
||||
},
|
||||
},
|
||||
versionURLTemplate: "https://github.com/facebook/react/releases/tag/v{{.Full}}",
|
||||
}
|
||||
}
|
||||
|
||||
func (r *React) Enabled() bool {
|
||||
return r.language.Enabled()
|
||||
}
|
||||
|
||||
func (r *React) getVersion() (string, error) {
|
||||
// tested by nx_test.go
|
||||
return getNodePackageVersion(r.language.env, "react")
|
||||
}
|
|
@ -299,6 +299,7 @@
|
|||
"ruby",
|
||||
"rust",
|
||||
"r",
|
||||
"react",
|
||||
"sapling",
|
||||
"session",
|
||||
"sitecore",
|
||||
|
@ -2548,6 +2549,37 @@
|
|||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"if": {
|
||||
"properties": {
|
||||
"type": {
|
||||
"const": "react"
|
||||
}
|
||||
}
|
||||
},
|
||||
"then": {
|
||||
"title": "React Segment",
|
||||
"description": "https://ohmyposh.dev/docs/segments/react",
|
||||
"properties": {
|
||||
"properties": {
|
||||
"properties": {
|
||||
"home_enabled": {
|
||||
"$ref": "#/definitions/home_enabled"
|
||||
},
|
||||
"fetch_version": {
|
||||
"$ref": "#/definitions/fetch_version"
|
||||
},
|
||||
"display_mode": {
|
||||
"$ref": "#/definitions/display_mode"
|
||||
},
|
||||
"version_url_template": {
|
||||
"$ref": "#/definitions/version_url_template"
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
},
|
||||
{
|
||||
"if": {
|
||||
"properties": {
|
||||
|
|
60
website/docs/segments/react.mdx
Normal file
60
website/docs/segments/react.mdx
Normal file
|
@ -0,0 +1,60 @@
|
|||
---
|
||||
id: react
|
||||
title: React
|
||||
sidebar_label: React
|
||||
---
|
||||
|
||||
## What
|
||||
|
||||
Display the currently active React version.
|
||||
|
||||
## Sample Configuration
|
||||
|
||||
import Config from "@site/src/components/Config.js";
|
||||
|
||||
<Config
|
||||
data={{
|
||||
type: "react",
|
||||
style: "powerline",
|
||||
powerline_symbol: "\uE0B0",
|
||||
foreground: "#81a1c1",
|
||||
template: " \uE7ba {{ .Full }} ",
|
||||
}}
|
||||
/>
|
||||
|
||||
## Properties
|
||||
|
||||
| Name | Type | Description |
|
||||
| ---------------------- | ---------- | ------------------------------------------------------------------------------------------------------------------------------------------------------------ |
|
||||
| `home_enabled` | `boolean` | display the segment in the HOME folder or not - defaults to `false` |
|
||||
| `fetch_version` | `boolean` | fetch the active version or not; useful if all you need is an icon indicating `ng` |
|
||||
| `display_mode` | `string` | <ul><li>`always`: the segment is always displayed</li><li>`files`: the segment is only displayed when `package.json` file is present (**default**)</li></ul> |
|
||||
| `version_url_template` | `string` | a go [text/template][go-text-template] [template][templates] that creates the URL of the version info / release notes |
|
||||
| `extensions` | `[]string` | allows to override the default list of file extensions to validate |
|
||||
| `folders` | `[]string` | allows to override the list of folder names to validate |
|
||||
| `cache_version` | `boolean` | cache the executable's version or not - defaults to `false` |
|
||||
|
||||
## Template ([info][templates])
|
||||
|
||||
:::note default template
|
||||
|
||||
```template
|
||||
{{ if .Error }}{{ .Error }}{{ else }}{{ .Full }}{{ end }}
|
||||
```
|
||||
|
||||
:::
|
||||
|
||||
### Properties
|
||||
|
||||
| Name | Type | Description |
|
||||
| -------- | -------- | -------------------------------------------------- |
|
||||
| `.Full` | `string` | the full version |
|
||||
| `.Major` | `string` | major number |
|
||||
| `.Minor` | `string` | minor number |
|
||||
| `.Patch` | `string` | patch number |
|
||||
| `.URL` | `string` | URL of the version info / release notes |
|
||||
| `.Error` | `string` | error encountered when fetching the version string |
|
||||
|
||||
[go-text-template]: https://golang.org/pkg/text/template/
|
||||
[templates]: /docs/configuration/templates
|
||||
[react]: https://react.dev/
|
|
@ -107,6 +107,7 @@ module.exports = {
|
|||
"segments/python",
|
||||
"segments/quasar",
|
||||
"segments/r",
|
||||
"segments/react",
|
||||
"segments/root",
|
||||
"segments/ruby",
|
||||
"segments/rust",
|
||||
|
|
Loading…
Reference in a new issue