### Installing neetob for development Clone the repository onto your system using the following command: ```sh git clone https://github.com/bigbinary/neetob.git ``` Navigate to the root of the application directory. ```sh cd neetob ``` To check and use the latest changes in the local repository install `neetob` like so: ```sh bin/setup ``` We can use, check or debug the `neetob` locally by directly invoking the `neetob` class like so: ```sh ruby exe/neetob ``` ### Conventional commit messages In `neetob` we are using the Google's [release please](https://github.com/googleapis/release-please) Github action to auto update the version and release the latest gem. In order to make this action work we have to use the [conventional commit messages](https://www.conventionalcommits.org/en/v1.0.0/). The Conventional commits specification is a lightweight convention on top of commit messages. It provides an easy set of rules for creating an explicit commit history. Generally, we use three types of suffix in the commit messages that are as follows: 1. `fix:` for the commit that fixes a bug in the codebase. This updates the third digit in the version. For example, `0.1.0` version will be updated to `0.1.1`. 2. `feat:` for the commit that introduces a new feature to the codebase. This updates the second digit in the version. For example, `0.1.0` version will be updated to `0.2.0`. 3. `BREAKING CHANGE:` for the commit that introduces a breaking API change. This updates the first digit in the version. For example, `0.1.0` version will be updated to `1.0.0`. For more details please refer [official docs](https://www.conventionalcommits.org/en/v1.0.0/) from Conventional commits. In `neetob` we use "squash and merge" option while merging the PR. So we have to update the commit message while squash and merge so that Github action can track that merge commit. For example: ![Commit message update](../images/commit-message-update.png) ### Gem release When a commit is added to the `main` branch [release](.github/workflows/release.yml) Github action checks that commit for the [conventional commit message](#conventional-commit-messages). If a proper suffix like `fix:`, `feat:`, etc is used in that commit message then the Github action will create a new PR with the updated version and changelog. The version and changelog for the `neetob` gem are updated automatically by the Github action using the commit message. When we merge this newly created PR by the Github action into the main branch, an updated Gem is released to the [rubygems](https://rubygems.org).