CONTRIBUTING.md in slack-ruby-client-2.1.0 vs CONTRIBUTING.md in slack-ruby-client-2.2.0

- old
+ new

@@ -61,42 +61,10 @@ Ruby style is enforced with [Rubocop](https://github.com/bbatsov/rubocop). Run `bundle exec rubocop` and fix any style issues highlighted, auto-correct issues when possible with `bundle exec rubocop -a`. To silence generally ignored issues, including line lengths or code complexity metrics, run `bundle exec rubocop --auto-gen-config`. Make sure that `bundle exec rake` completes without errors. -### Update Slack Web API - -Slack Web API is updated from https://github.com/slack-ruby/slack-api-ref, a maintained, machine-readable version of Slack API Docs, generated by scraping [api.slack.com](https://api.slack.com). To update the Web API from the latest definition run the following Rake task. - -``` -bundle exec rake slack:api:update -``` - -#### Patching Slack Web API - -Sometimes it's necessary to patch auto-generated Slack Web API methods. For example, we want to help clients with calling `to_json` on the `attachments` parameter sent to `chat_postMessage`. See [#20](https://github.com/slack-ruby/slack-ruby-client/issues/20). - -The broad steps are: -1. Run `rake slack:api:update` to check that existing patches are still valid. - - If you run into a `failed to apply patch` error, the auto-generated methods likely drifted from the last patch. Follow the steps [below](#resolving-patch-errors). - - This may add new methods if the API has updated, please split them up into multiple PRs if so. -2. Make a change to a generated file, for example `lib/slack/web/api/endpoints/chat.rb`. -3. Generate a patch: - ``` - git diff --no-color HEAD lib/slack/web/api/endpoints/chat.rb > lib/slack/web/api/patches/chat.added-support.patch - ``` -4. Run `rake slack:api:update` to ensure that the patch is cleanly applied. Implement a test for the added or modified functionality and commit the patch file. - -##### Resolving Patch Errors - -The auto-generated method files may drift overtime e.g. new arguments may be added or descriptions changed. Since previous patches were based on the older auto-generated files, git may be unable to apply them to the new files. Resolving them requires some good ol' splicing: -1. Run `rake slack:api:update SKIP_PATCH=true` to create the raw auto-generated files. Commit the files that you are updating, so we can run `git diff` later. -2. Go through the old patches for the files (e.g. in `lib/slack/web/api/patches/chat.added-support.patch`), copying code into the new files. - - Run `git apply --reject path/to/patch-file.patch` to see hunks that couldn't be applied. -3. Continue with Step 2 [above](#patching-slack-web-api). - - ### Write Documentation Document any external behavior in the [README](README.md). ### Update Changelog @@ -161,9 +129,44 @@ Go back to your pull request after a few minutes and see whether it passed muster with CI. Everything should look green, otherwise fix issues and amend your commit as described above. ### Be Patient It's likely that your change will not be merged and that the nitpicky maintainers will ask you to do more, or fix seemingly benign problems. Hang on there! +While you wait you can help with keeping the Slack Web API up to date, see [below](#update-slack-web-api). + +### Update Slack Web API + +Please make sure to [create a separate branch](#create-a-topic-branch) for your changes. + +Slack Web API is updated from https://github.com/slack-ruby/slack-api-ref, a maintained, machine-readable version of Slack API Docs, generated by scraping [api.slack.com](https://api.slack.com). To update the Web API from the latest definition run the following Rake task. + +``` +bundle exec rake slack:api:update +``` + +#### Patching Slack Web API + +Sometimes it's necessary to patch auto-generated Slack Web API methods. For example, we want to help clients with calling `to_json` on the `attachments` parameter sent to `chat_postMessage`. See [#20](https://github.com/slack-ruby/slack-ruby-client/issues/20). + +The broad steps are: +1. Run `rake slack:api:update` to check that existing patches are still valid. + - If you run into a `failed to apply patch` error, the auto-generated methods likely drifted from the last patch. Follow the steps [below](#resolving-patch-errors). + - This may add new methods if the API has updated, please split them up into multiple PRs if so. +2. Make a change to a generated file, for example `lib/slack/web/api/endpoints/chat.rb`. +3. Generate a patch: + ``` + git diff --no-color HEAD lib/slack/web/api/endpoints/chat.rb > lib/slack/web/api/patches/chat.added-support.patch + ``` +4. Run `rake slack:api:update` to ensure that the patch is cleanly applied. Implement a test for the added or modified functionality and commit the patch file. + +##### Resolving Patch Errors + +The auto-generated method files may drift overtime e.g. new arguments may be added or descriptions changed. Since previous patches were based on the older auto-generated files, git may be unable to apply them to the new files. Resolving them requires some good ol' splicing: +1. Run `rake slack:api:update SKIP_PATCH=true` to create the raw auto-generated files. Commit the files that you are updating, so we can run `git diff` later. +2. Go through the old patches for the files (e.g. in `lib/slack/web/api/patches/chat.added-support.patch`), copying code into the new files. + - Run `git apply --reject path/to/patch-file.patch` to see hunks that couldn't be applied. +3. Continue with Step 2 [above](#patching-slack-web-api). + ## Thank You Please do know that we really appreciate and value your time and work. We love you, really.