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 
bundle exec rake lint:rubocopand ensure you have not created any Rubocop violations. - 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.