Contributing#
Contributions, issues and pull requests are welcome. Please visit the GitHub home for this project.
License#
This code is under the Eclipse v2 license
Source#
JRuby Scripting openHAB is hosted on GitHub.
Development Environment Setup#
The development process has been tested on MacOS, and Ubuntu. Other operating systems may work.
- Install Ruby 2.6.8 and JRuby 9.3.8.0 (or later)
- Fork the repo and clone it
- Install bundler
- Run
bundler installfrom inside of the repo directory - To avoid conflicts, the openHAB development instance can use custom ports by defining these environment variables:
OPENHAB_HTTP_PORTOPENHAB_HTTPS_PORTOPENHAB_SSH_PORTOPENHAB_LSP_PORT
- Run
bundle exec rake openhab:setupfrom inside of the repo directory. This will download a copy of openHAB local in your development environment, start it and prepare it for JRuby openHAB Scripting Development - Install pre-commit and then run
pre-commit installif you would like to install a git pre-commit hook to automatically run rubocop.
Code Documentation#
Code documentation is written in Yard and the current documentation for this project is available on GitHub pages.
Development Process#
- Create a branch for your contribution.
- Write your tests the project uses Behavior Driven Development with RSpec. The spec directory has many examples. Feel free ask in your PR if you need help.
- Write your code.
- Verify your tests now pass by running
bin/rspec spec/<your spec file>_spec.rb. This requires JRuby. - Update the documentation, run
bin/yardocto view the rendered documentation locally - Lint your code with
bin/rubocopand ensure you have not created any Rubocop violations. Prefer MRI Ruby for running RuboCop, since there's no need to run it under JRuby, and it's much slower under JRuby. - Submit your PR(s)!
If you get stuck or need help along the way, please open an issue.
Release Process#
A release is triggered manually using the GitHub Release Workflow which will perform these steps:
- Update the changelog automatically.
- It will collect all issues and pull requests labelled
bug,enhancementsorbreakingthat have been closed / merged since the last release. - Issues/PRs without labels won't be included in the changelog.
- The issue/PR titles will be used as the log entry. They can be edited prior to running the release action.
- An optional release summary
can be added by creating and closing an issue labelled
release-summary. The content of the issue's first post will be inserted under the version number heading.
- It will collect all issues and pull requests labelled
- Bump the library's version number.
- Commit the updated changelog and version number to the github repository.
- Create a new version tag and GitHub release entry.
- Publish the new gem version to RubyGems.