oh-my-posh/docs/docs/contributing-segment.md
2020-10-06 21:13:21 +02:00

2.5 KiB

id title sidebar_label
contributing-segment Add Segment Add Segment

Create the logic

Add a new file following this convention: new_segment.go. Ensure new is a single verb indicating the context the segment renders.

You can use the following template as a guide.

package main

type new struct {
    props          *properties
    env            environmentInfo
}

const (
    //NewProp switches something
    NewProp Property = "newprop"
)

func (n *new) enabled() bool {
    true
}

func (n *new) string() string {
    newText := n.props.getString(NewProp, "n00b")
    return newText
}

func (n *new) init(props *properties, env environmentInfo) {
    n.props = props
    n.env = env
}

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 for inspiration.

Create a name for your Segment

segment.go contains the list of available SegmentType's, which gives them a name we can map from the .json themes.

Add your segment.

//New is brand new
New SegmentType = "new"

Add the SegmentType mapping

Map your SegmentType to your Segment in the mapSegmentWithWriter function.

New: &new{},

Test your functionality

Even with unit tests, it's a good idea to build and validate the changes.

go build -o $GOPATH/bin/oh-my-posh

Add the documentation

Create a new markdown file underneath the docs/docs folder called new-segment.md. Use the following template as a guide.

---
id: new
title: New
sidebar_label: New
---

## What

Display something new.

## Sample Configuration

```json
{
  "type": "new",
  "style": "powerline",
  "powerline_symbol": "",
  "foreground": "#193549",
  "background": "#ffeb3b",
  "properties": {
    "newprop": "w00p"
  }
}
```

## Properties

- newprop: `string` - the new text to show

Map the new documentation in the sidebar

Open sidebars.js and add your document id (new) to the items of the Segments category.

Create a pull request

And be patient, I'm going as fast as I can 🏎