Skip to content

Development

It is very welcome to contribute to this project. The following sections will guide you through on how to become a contributor.

Tech Stack

The application is written in Bash. To make the development process easier the bash scripts are split up into multiple files. To get an single executable file, a custom "compiler" was written in Python. This compiler will merge all the files into a single file and specific markers.

Finding Issues

If you want to contribute but don't know where to start, you can look at the issues page. There you can find issues that are up for grabs. If you find an issue that you want to work on, please comment on the issue that you are working on it.

Local Installation

Currently only development on Linux is supported.

  1. Clone the repository
bash
git clone https://github.com/cophilot/msh.git
  1. Be sure to have python3 installed
  2. Run the setup script:
bash
.scripts/setup

Now the application can be run in dev mode with:

bash
./mshd <args>

Scripts

Their are several predefined scripts for testing the code. They can be found in the .scripts directory and can be run with:

bash
./.scripts/<script-name>

The following scripts are available:

  • test: Run the tests
  • lint: Run the linter
  • format: Format the code
  • format-check: Check if the code is formatted
  • build: Build the application

CI Pipeline

On a push or pull request to the dev branch the CI pipeline will run. The pipeline consists of the following steps:

  1. Check if the code is formatted (can be fixed with ./.scripts/format)
  2. Run the linter
  3. Run the tests
  4. Build the application

Only if all steps pass the pipeline will succeed and the code can be merged into the dev branch.

Pull Requests

When creating a pull request please make sure to follow the following guidelines:

  • Set the target branch to dev
  • Add a description of the changes
  • Link the issue that is being solved (if applicable)
  • Make sure the CI pipeline passes

Happy Coding!

Now you are ready to start coding!

If you have any questions, feel free to ask in the issues or in the discussions or write me an email.