#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.