mirror of
https://github.com/JanDeDobbeleer/oh-my-posh.git
synced 2024-12-27 20:09:39 -08:00
feat: react segment
This commit is contained in:
parent
ed40fc7bf5
commit
b8830a683a
|
@ -208,6 +208,8 @@ const (
|
||||||
QUASAR SegmentType = "quasar"
|
QUASAR SegmentType = "quasar"
|
||||||
// R version
|
// R version
|
||||||
R SegmentType = "r"
|
R SegmentType = "r"
|
||||||
|
// REACT writes the current react version
|
||||||
|
REACT SegmentType = "react"
|
||||||
// ROOT writes root symbol
|
// ROOT writes root symbol
|
||||||
ROOT SegmentType = "root"
|
ROOT SegmentType = "root"
|
||||||
// RUBY writes which ruby version is currently active
|
// RUBY writes which ruby version is currently active
|
||||||
|
@ -323,6 +325,7 @@ var Segments = map[SegmentType]func() SegmentWriter{
|
||||||
PYTHON: func() SegmentWriter { return &segments.Python{} },
|
PYTHON: func() SegmentWriter { return &segments.Python{} },
|
||||||
QUASAR: func() SegmentWriter { return &segments.Quasar{} },
|
QUASAR: func() SegmentWriter { return &segments.Quasar{} },
|
||||||
R: func() SegmentWriter { return &segments.R{} },
|
R: func() SegmentWriter { return &segments.R{} },
|
||||||
|
REACT: func() SegmentWriter { return &segments.React{} },
|
||||||
ROOT: func() SegmentWriter { return &segments.Root{} },
|
ROOT: func() SegmentWriter { return &segments.Root{} },
|
||||||
RUBY: func() SegmentWriter { return &segments.Ruby{} },
|
RUBY: func() SegmentWriter { return &segments.Ruby{} },
|
||||||
RUST: func() SegmentWriter { return &segments.Rust{} },
|
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",
|
"ruby",
|
||||||
"rust",
|
"rust",
|
||||||
"r",
|
"r",
|
||||||
|
"react",
|
||||||
"sapling",
|
"sapling",
|
||||||
"session",
|
"session",
|
||||||
"sitecore",
|
"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": {
|
"if": {
|
||||||
"properties": {
|
"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/python",
|
||||||
"segments/quasar",
|
"segments/quasar",
|
||||||
"segments/r",
|
"segments/r",
|
||||||
|
"segments/react",
|
||||||
"segments/root",
|
"segments/root",
|
||||||
"segments/ruby",
|
"segments/ruby",
|
||||||
"segments/rust",
|
"segments/rust",
|
||||||
|
|
Loading…
Reference in a new issue