Contributing
Thanks for your interest in contributing to gdbgui!
If your change is small, go ahead and submit a pull request. If it is substantial, create a GitHub issue to discuss it before making the change.
Dependencies
1.) nox is used to automate various tasks. You will need it installed on your system before continuing.
You can install it with pipx (recommended):
> pipx install nox
or pip:
> pip install --user nox
2.) yarn is used for managing JavaScript files
Developing
Development can be done with one simple step:
> nox -s develop
This will install all Python and JavaScript dependencies, and build and watch Python and JavaScript files for changes, automatically reloading as things are changed.
Make sure you turn your cache off so that changes made locally are reflected in the page.
Running and Adding tests
> nox
runs all applicable tests and linting.
Python tests are in gdbgui/tests
. They are run as part of the above command, but can be run with
> nox -s python_tests
JavaScript tests are in gdbgui/src/js/tests
. They are run as part of the above command, but can be run with
> nox -s js_tests
Documentation
Modifying Documentation
Documentation is made with mkdocs
. Then make changes to mkdocs.yml
or md files in the docs
directory.
To build docs, run
nox -s docs
To see a live preview of current documentation, run
nox -s watch_docs
Publishing Documentation
The generated documentation is published to the gh-pages
branch.
nox -s publish_docs
Building Binary Executables
These are automatically built on CI, but can be built locally with corresponding nox
commands, such as:
nox -s build_executables_current_platform
Publishing a New Version
- Make sure the version number is incremented in
VERSION.txt
. - The version to release must be on the master branch and have all CI tests pass and new binary executable artifacts attached to the GitHub action results
- Publish the package to PyPI and update documentation. Both are done with this
nox -s publish
. - Create a "release" in GitHub and attach the gdbgui binary executable artifacts to it.