feat(segment): add tauri and svelte
Some checks are pending
Code QL / code-ql (push) Waiting to run
Azure Static Web Apps CI/CD / Build and Deploy (push) Waiting to run
Release / changelog (push) Waiting to run
Release / artifacts (push) Blocked by required conditions

This commit is contained in:
Noah Springer 2024-11-22 19:45:08 +00:00 committed by Jan De Dobbeleer
parent 9ba85ba449
commit 0d5cbc8ab3
7 changed files with 300 additions and 0 deletions

View file

@ -185,6 +185,8 @@ const (
STATUS SegmentType = "status" STATUS SegmentType = "status"
// STRAVA is a sports activity tracker // STRAVA is a sports activity tracker
STRAVA SegmentType = "strava" STRAVA SegmentType = "strava"
// Svelte segment
SVELTE SegmentType = "svelte"
// Subversion segment // Subversion segment
SVN SegmentType = "svn" SVN SegmentType = "svn"
// SWIFT writes the active swift version // SWIFT writes the active swift version
@ -193,6 +195,8 @@ const (
SYSTEMINFO SegmentType = "sysinfo" SYSTEMINFO SegmentType = "sysinfo"
// TALOSCTL writes the talosctl context // TALOSCTL writes the talosctl context
TALOSCTL SegmentType = "talosctl" TALOSCTL SegmentType = "talosctl"
// Tauri Segment
TAURI SegmentType = "tauri"
// TERRAFORM writes the terraform workspace we're currently in // TERRAFORM writes the terraform workspace we're currently in
TERRAFORM SegmentType = "terraform" TERRAFORM SegmentType = "terraform"
// TEXT writes a text // TEXT writes a text
@ -306,10 +310,12 @@ var Segments = map[SegmentType]func() SegmentWriter{
SPOTIFY: func() SegmentWriter { return &segments.Spotify{} }, SPOTIFY: func() SegmentWriter { return &segments.Spotify{} },
STATUS: func() SegmentWriter { return &segments.Status{} }, STATUS: func() SegmentWriter { return &segments.Status{} },
STRAVA: func() SegmentWriter { return &segments.Strava{} }, STRAVA: func() SegmentWriter { return &segments.Strava{} },
SVELTE: func() SegmentWriter { return &segments.Svelte{} },
SVN: func() SegmentWriter { return &segments.Svn{} }, SVN: func() SegmentWriter { return &segments.Svn{} },
SWIFT: func() SegmentWriter { return &segments.Swift{} }, SWIFT: func() SegmentWriter { return &segments.Swift{} },
SYSTEMINFO: func() SegmentWriter { return &segments.SystemInfo{} }, SYSTEMINFO: func() SegmentWriter { return &segments.SystemInfo{} },
TALOSCTL: func() SegmentWriter { return &segments.TalosCTL{} }, TALOSCTL: func() SegmentWriter { return &segments.TalosCTL{} },
TAURI: func() SegmentWriter { return &segments.Tauri{} },
TERRAFORM: func() SegmentWriter { return &segments.Terraform{} }, TERRAFORM: func() SegmentWriter { return &segments.Terraform{} },
TEXT: func() SegmentWriter { return &segments.Text{} }, TEXT: func() SegmentWriter { return &segments.Text{} },
TIME: func() SegmentWriter { return &segments.Time{} }, TIME: func() SegmentWriter { return &segments.Time{} },

30
src/segments/svelte.go Normal file
View file

@ -0,0 +1,30 @@
package segments
type Svelte struct {
language
}
func (s *Svelte) Template() string {
return languageTemplate
}
func (s *Svelte) Enabled() bool {
if !s.hasNodePackage("svelte") {
return false
}
s.extensions = []string{"package.json"}
s.commands = []*cmd{
{
regex: `(?:(?P<version>((?P<major>[0-9]+).(?P<minor>[0-9]+).(?P<patch>[0-9]+))))`,
getVersion: s.getVersion,
},
}
s.versionURLTemplate = "https://github.com/sveltejs/svelte/releases/tag/svelte%40{{.Full}}"
return s.language.Enabled()
}
func (s *Svelte) getVersion() (string, error) {
return s.nodePackageVersion("svelte")
}

30
src/segments/tauri.go Normal file
View file

@ -0,0 +1,30 @@
package segments
import (
"path/filepath"
)
type Tauri struct {
language
}
func (t *Tauri) Template() string {
return languageTemplate
}
func (t *Tauri) Enabled() bool {
t.extensions = []string{"package.json"}
t.commands = []*cmd{
{
regex: `(?:(?P<version>((?P<major>[0-9]+).(?P<minor>[0-9]+).(?P<patch>[0-9]+))))`,
getVersion: t.getVersion,
},
}
t.versionURLTemplate = "https://github.com/tauri-apps/tauri/releases/tag/tauri-v{{.Full}}"
return t.language.Enabled()
}
func (t *Tauri) getVersion() (string, error) {
return t.nodePackageVersion(filepath.Join("@tauri-apps", "api"))
}

View file

@ -386,9 +386,11 @@
"shell", "shell",
"sysinfo", "sysinfo",
"strava", "strava",
"svelte",
"svn", "svn",
"swift", "swift",
"talosctl", "talosctl",
"tauri",
"time", "time",
"text", "text",
"terraform", "terraform",
@ -4899,6 +4901,110 @@
} }
} }
} }
},
{
"if": {
"properties": {
"type": {
"const": "tauri"
}
}
},
"then": {
"title": "Tauri Segment",
"description": "https://ohmyposh.dev/docs/segments/cli/tauri",
"properties": {
"properties": {
"properties": {
"home_enabled": {
"$ref": "#/definitions/home_enabled"
},
"fetch_version": {
"$ref": "#/definitions/fetch_version"
},
"cache_duration": {
"$ref": "#/definitions/cache_duration",
"default": "none"
},
"display_mode": {
"$ref": "#/definitions/display_mode"
},
"missing_command_text": {
"$ref": "#/definitions/missing_command_text"
},
"version_url_template": {
"$ref": "#/definitions/version_url_template"
},
"extensions": {
"type": "array",
"title": "Extensions",
"description": "The extensions to look for when determining if the current directory is a Tauri project",
"default": [
"package.json"
],
"items": {
"type": "string"
}
},
"folders": {
"$ref": "#/definitions/folders"
}
}
}
}
}
},
{
"if": {
"properties": {
"type": {
"const": "svelte"
}
}
},
"then": {
"title": "Svelte Segment",
"description": "https://ohmyposh.dev/docs/segments/cli/svelte",
"properties": {
"properties": {
"properties": {
"home_enabled": {
"$ref": "#/definitions/home_enabled"
},
"fetch_version": {
"$ref": "#/definitions/fetch_version"
},
"cache_duration": {
"$ref": "#/definitions/cache_duration",
"default": "none"
},
"display_mode": {
"$ref": "#/definitions/display_mode"
},
"missing_command_text": {
"$ref": "#/definitions/missing_command_text"
},
"version_url_template": {
"$ref": "#/definitions/version_url_template"
},
"extensions": {
"type": "array",
"title": "Extensions",
"description": "The extensions to look for when determining if the current directory is a Svelte project",
"default": [
"package.json"
],
"items": {
"type": "string"
}
},
"folders": {
"$ref": "#/definitions/folders"
}
}
}
}
}
} }
] ]
} }

View file

@ -0,0 +1,63 @@
---
id: svelte
title: Svelte
sidebar_label: Svelte
---
## What
Display the currently active Svelte version.
## Sample Configuration
import Config from "@site/src/components/Config.js";
<Config
data={{
type: "svelte",
style: "powerline",
powerline_symbol: "\uE0B0",
foreground: "#000000",
background: "#1976d2",
template: " \ue697 {{ .Full }} ",
}}
/>
## Properties
| Name | Type | Default | Description |
| ---------------------- | :--------: | :------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `home_enabled` | `boolean` | `false` | display the segment in the HOME folder or not |
| `fetch_version` | `boolean` | `true` | fetch the svelte version |
| `cache_duration` | `string` | `24h` | the duration for which the version will be cached. The duration is a string in the format `1h2m3s` and is parsed using the [time.ParseDuration] function from the Go standard library. To disable the cache, use `none` |
| `missing_command_text` | `string` | | text to display when the command is missing |
| `display_mode` | `string` | `context` | <ul><li>`always`: the segment is always displayed</li><li>`files`: the segment is only displayed when file `extensions` listed are present</li><li>`context`: displays the segment when the environment or files is active</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` | `angular.json` | allows to override the default list of file extensions to validate |
| `folders` | `[]string` | | allows to override the list of folder names to validate |
## 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
[svelte-docs]: https://svelte.dev/docs/svelte/overview
[time.ParseDuration]: https://golang.org/pkg/time/#ParseDuration

View file

@ -0,0 +1,63 @@
---
id: tauri
title: Tauri
sidebar_label: Tauri
---
## What
Display the currently active Tauri version.
## Sample Configuration
import Config from "@site/src/components/Config.js";
<Config
data={{
type: "tauri",
style: "powerline",
powerline_symbol: "\uE0B0",
foreground: "#000000",
background: "#1976d2",
template: " \ue8bb {{ .Full }} ",
}}
/>
## Properties
| Name | Type | Default | Description |
| ---------------------- | :--------: | :------------: | ------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------ |
| `home_enabled` | `boolean` | `false` | display the segment in the HOME folder or not |
| `fetch_version` | `boolean` | `true` | fetch the tauri version |
| `cache_duration` | `string` | `24h` | the duration for which the version will be cached. The duration is a string in the format `1h2m3s` and is parsed using the [time.ParseDuration] function from the Go standard library. To disable the cache, use `none` |
| `missing_command_text` | `string` | | text to display when the command is missing |
| `display_mode` | `string` | `context` | <ul><li>`always`: the segment is always displayed</li><li>`files`: the segment is only displayed when file `extensions` listed are present</li><li>`context`: displays the segment when the environment or files is active</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` | `angular.json` | allows to override the default list of file extensions to validate |
| `folders` | `[]string` | | allows to override the list of folder names to validate |
## 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
[tauri-docs]: https://v2.tauri.app/
[time.ParseDuration]: https://golang.org/pkg/time/#ParseDuration

View file

@ -82,7 +82,9 @@ module.exports = {
"segments/cli/pnpm", "segments/cli/pnpm",
"segments/cli/quasar", "segments/cli/quasar",
"segments/cli/react", "segments/cli/react",
"segments/cli/svelte",
"segments/cli/talosctl", "segments/cli/talosctl",
"segments/cli/tauri",
"segments/cli/terraform", "segments/cli/terraform",
"segments/cli/ui5tooling", "segments/cli/ui5tooling",
"segments/cli/umbraco", "segments/cli/umbraco",