Skip to content

Latest commit

 

History

History
139 lines (98 loc) · 4.35 KB

contributing-started.mdx

File metadata and controls

139 lines (98 loc) · 4.35 KB
id title sidebar_label
contributing_started
Get Started
Get Started

import Tabs from "@theme/Tabs"; import TabItem from "@theme/TabItem";

Install dependencies

go

The code base is in go, meaning we need a working go setup before we can do anything else. Have a look at the go guide to get up and running with go in no time!

golangci-lint

To make sure we keep on writing quality code, golang-ci lint is used to validate the changes. Have a look at the local installation guide to make sure you can validate this yourself as well.

go-bindata

Oh my Posh packs the initialization scipts for the different shells, but go does not ship with the ability to add files other than go code to your compiled binary. go-bindata allows us to add initialization files and ship them in the source code to easily bootstrap your shell with Oh my Posh.

There are multiple ways to install go-bindata.

<Tabs defaultValue="homebrew" values={[ { label: 'homebrew', value: 'homebrew', }, { label: 'linux', value: 'linux', }, { label: 'source', value: 'source', }, ] }>

brew install go-bindata
curl --silent --location --output /usr/local/bin/go-bindata https://github.com/kevinburke/go-bindata/releases/download/v3.11.0/go-bindata-linux-amd64
chmod 755 /usr/local/bin/go-bindata
go get -u github.com/kevinburke/go-bindata/...

Be careful as executing this inside the Oh my Posh repository will adjust the go.mod file with this dependency. Today, there's no way to install a dependency system wide for go, although that's in the works. Make sure to remove this before submitting a PR as there's a check in place to avoid adding unused dependencies.

Get the source code

The source is hosted on Github. When you want to contribute, create a fork so you can make changes in your repository and create pull request in the official Oh my Posh repository.

Clone your fork of Oh my Posh locally, replace <user> with your Github username.

git clone git@github.com:<user>/oh-my-posh3.git

Running tests

The go source code can be found in the src/ directory, make sure to change to that one before continuing. Once in the right directory, we need to pack the initialization scripts into the source code.

go generate

Provided the previous steps were performed correctly, you should now see a new file called init.go. Do not wory about this file as it's ignored by git, we generate it every time the app gets build.

Unit tests

go test -v

golangci-lint

golangci-lint run

Building the app

The easiest way to validate your changes is to write tests. Unfortunately, as it's a visual tool, you'll want to validate the changes by running the prompt in your shell as well. You can make use of go's bin folder which is usually added to your path to add your own Oh my Posh binary to and immediately see the changes appear in your shell.

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

Get an editor

A default config(.vscode folder) for Visual Studio Code is available in the repo:

  • golangci-lint is configured as the default linter.

  • Recommended extensions available for a smooth bootstrap.

    recommended extensions

  • Default run and debug configurations available.

Once the extensions are installed:

  • Debug can be started by hitting F5.
  • All tests can be run using the Test explorer.

Up Next

With everything set up, you're ready to start making changes and create your first PR!