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.
- Clone the repository
git clone https://github.com/cophilot/msh.git
- Be sure to have python3 installed
- Run the setup script:
.scripts/setup
Now the application can be run in dev mode with:
./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:
./.scripts/<script-name>
The following scripts are available:
test
: Run the testslint
: Run the linterformat
: Format the codeformat-check
: Check if the code is formattedbuild
: 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:
- Check if the code is formatted (can be fixed with
./.scripts/format
) - Run the linter
- Run the tests
- 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.