Skip to content

Latest commit

 

History

History
120 lines (84 loc) · 4.61 KB

File metadata and controls

120 lines (84 loc) · 4.61 KB

Contributing

Note we have a code of conduct, please follow it in all your interactions with the project.

Note

Theme additions are no longer accepted due to the ever growing set. We do however accept showcasing your custom theme in the themes discussion section here or the themes channel on Discord.

Ensure you've read through the documentation so you understand the core concepts of the project. If you're looking to get familiar with go, following the getting started guide can be a good starting point.

Setting Up Agents and Skills

This project uses APM (Agent Package Manager) to manage shared AI agent skills. Project-specific skills live in .github/skills/, while shared skills are declared in apm.yml and installed via APM.

Install APM

curl -sSL https://raw.githubusercontent.com/microsoft/apm/main/install.sh | sh

Alternatively, install via Homebrew or pip:

brew install microsoft/apm/apm
# or
pip install apm-cli

Install Skills

After cloning the repository, run:

apm install

This pulls in the shared skills from JanDeDobbeleer/agentic (conventional commits, Go, Markdown, and PowerShell conventions). The project-specific skills (segment-create and segment-docs) are already included in the repository.

Pull Request Process

  1. Ensure any dependencies or build artifacts are removed/ignored before creating a commit.
  2. Commits follow the conventional commits guidelines. (You can look up the supported types along with an explanation in the documentation)
  3. Update the documentation with details of changes to the functionality, this includes new segments or core functionality.
  4. Pull Requests are merged once all checks pass and a project maintainer has approved it.

Codespaces / Devcontainer Development Environment

Arguably the easiest way to contribute anything is to use our prepared development environment.

We have a .devcontainer/devcontainer.json file, meaning we are compatible with:

This Linux environment includes all shells supported by oh-my-posh, including Bash, ZSH, Fish and PowerShell, the latter of which is the default.

Configuring Devcontainer's Timezone & Theme

  1. Open the .devcontainer/devcontainer.json file and in the "build" section modify:

  2. Summon the Command Panel (Ctrl+Shift+P) and select Codespaces: Rebuild Container to rebuild your devcontainer. (This should take just a few seconds.)

Recompiling oh-my-posh

The devcontainer definition preinstalls the latest stable oh-my-posh release at build time.

To overwrite the installation's version inside the running devcontainer, you may use the VSCode task devcontainer: build omp to rebuild your oh-my-posh with that of your running repository's state. (You might see a button for this in your statusbar.)

If the compile succeeds, oh-my-posh --version should reply: development

Should you somehow mess up your devcontainer's OMP install catastrophically, remember that if you do Codespaces: Rebuild Container again, you'll be back to the latest stable release.

Local development

Make sure your local go version matches with the pinned version in go.mod. You can build oh-my-posh by navigating the to the /src folder and executing the following command.

go build -v -o /path/to/oh-my-posh(.exe)

Running tests

To execute the tests, run the following command from the /src folder.

go test "./..."