jackhammer 1.3.0 → 1.3.5

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: b3233e5bc59da2462018ba8fce8316c164a98b67de74febd54adb5eb947ea791
4
- data.tar.gz: 1cc3cc86e29fd9f053b35be5ccfb5b3e60c0a6513f049d39c7c725fdf2cc103d
3
+ metadata.gz: 485b5598534853da9cc94ce3402e8e81e1f261820208f04d4f343783cf82e231
4
+ data.tar.gz: e8ae165eb429b89065c8cb3630457bffc15d1be6a9e59826d52466f2a28b19dd
5
5
  SHA512:
6
- metadata.gz: d35d51ed2ed012671cd41035f417e161d5ecdb1c44a01e6c27c0c880e967de30d5c04900a517cddceb93987e7f4ad091e07e11a1b62a09f6893d70d2a8f86c88
7
- data.tar.gz: 85720d119ebbde35fbb0f05fb57058f7afe8251f7942891ccfd8765503cd022cb2ea3a376ac73cb978dda66dc16358b9462884e1589d46e218d41b3346065dc3
6
+ metadata.gz: b505c5468529bb070b6fd193a460a0252134886059b22858961f54af1932e56fb6096fe9f4fe966e32c76856cb85aad8451fa2aaf22d6c93f97f5d4722b8a92f
7
+ data.tar.gz: 35afe310870caf60d6a505c9f5839f4043014f7c651166d129116dfa012da4f54f92dd8718ca7ab74f42e9c9f0442e136331134739597e5cecd155698ca126bc
@@ -0,0 +1,33 @@
1
+ ---
2
+ name: Bug report
3
+ about: Create a report to track an issue that has been identified
4
+ title: ''
5
+ labels: ''
6
+ assignees: ''
7
+
8
+ ---
9
+
10
+ **Describe the bug**
11
+ A clear and concise description of what the bug is.
12
+
13
+ **To Reproduce**
14
+ Steps to reproduce the behavior:
15
+ 1. Go to '...'
16
+ 2. Click on '....'
17
+ 3. Scroll down to '....'
18
+ 4. See error
19
+
20
+ **Expected behavior**
21
+ A clear and concise description of what you expected to happen.
22
+
23
+ **Mutation/Query**
24
+
25
+ **URL and HTTP method (for non-GQL):**
26
+
27
+ **Sentry or Logs URL:**
28
+
29
+ **User/authentication details**
30
+ Impacted user name or service account
31
+
32
+ **Additional context**
33
+ Add any other context about the problem here.
@@ -0,0 +1 @@
1
+ blank_issues_enabled: false
@@ -0,0 +1,22 @@
1
+ ---
2
+ name: New story
3
+ about: Add a new story for implementation
4
+ title: ''
5
+ labels: ''
6
+ assignees: ''
7
+
8
+ ---
9
+
10
+ **Describe the solution**
11
+ A clear and concise description of what you want to happen.
12
+ When will this feature be done?
13
+
14
+ **Describe the users**
15
+ Who are we building this feature for?
16
+
17
+ **Additional context**
18
+ Add any other context or screenshots about the feature request here.
19
+ Link to any applicable documents describing the feature.
20
+
21
+ **Designs**
22
+ Link to any applicable designs on Invision.
@@ -0,0 +1,18 @@
1
+ ## Description
2
+ <!--- Describe your changes in detail -->
3
+
4
+ ## Related issue(s)
5
+ <!--- GH issue number -->
6
+
7
+ ## Motivation and Context
8
+ <!--- Why is this change required? What problem does it solve? -->
9
+ <!--- If it fixes an open issue, please link to the issue here. -->
10
+
11
+ ## How Has This Been Tested?
12
+ <!--- Please describe in detail how you tested your changes. -->
13
+
14
+ ## Screenshots (if appropriate):
15
+ <!--- Please add any screenshots of the feature. -->
16
+
17
+ ## Related PRs
18
+ <!--- Please add links to any related PRs (backend, component packages, etc). -->
@@ -0,0 +1,16 @@
1
+ # automatically approve PRs submitted by Dependabot
2
+ # this will allow Dependabot to automatically merge dependency update PRs where CI passes
3
+ # from: https://github.com/hmarr/auto-approve-action
4
+ name: Auto approve Dependabot PRs
5
+
6
+ on:
7
+ pull_request
8
+
9
+ jobs:
10
+ auto-approve:
11
+ runs-on: ubuntu-latest
12
+ steps:
13
+ - uses: hmarr/auto-approve-action@v2.0.0
14
+ if: github.actor == 'dependabot[bot]' || github.actor == 'dependabot-preview[bot]'
15
+ with:
16
+ github-token: "${{ secrets.GITHUB_TOKEN }}"
@@ -3,8 +3,9 @@ sudo: false
3
3
  language: ruby
4
4
  cache: bundler
5
5
  rvm:
6
- - 2.5
7
6
  - 2.6
7
+ - 2.7
8
8
  before_install: gem install bundler
9
9
  script:
10
- - bundle exec rake
10
+ - bundle exec rake spec
11
+ - bundle exec rake rubocop
@@ -1,55 +1,82 @@
1
1
  PATH
2
2
  remote: .
3
3
  specs:
4
- jackhammer (1.3.0)
4
+ jackhammer (1.3.5)
5
5
  bunny (~> 2.14)
6
6
 
7
7
  GEM
8
8
  remote: https://rubygems.org/
9
9
  specs:
10
- amq-protocol (2.3.0)
11
- ast (2.4.0)
12
- bunny (2.14.3)
13
- amq-protocol (~> 2.3, >= 2.3.0)
10
+ activemodel (6.0.3.2)
11
+ activesupport (= 6.0.3.2)
12
+ activerecord (6.0.3.2)
13
+ activemodel (= 6.0.3.2)
14
+ activesupport (= 6.0.3.2)
15
+ activesupport (6.0.3.2)
16
+ concurrent-ruby (~> 1.0, >= 1.0.2)
17
+ i18n (>= 0.7, < 2)
18
+ minitest (~> 5.1)
19
+ tzinfo (~> 1.1)
20
+ zeitwerk (~> 2.2, >= 2.2.2)
21
+ amq-protocol (2.3.2)
22
+ ast (2.4.1)
23
+ bunny (2.15.0)
24
+ amq-protocol (~> 2.3, >= 2.3.1)
14
25
  bunny-mock (1.7.0)
15
26
  bunny (>= 1.7)
16
- byebug (11.1.1)
17
- diff-lcs (1.3)
18
- jaro_winkler (1.5.4)
19
- parallel (1.19.1)
20
- parser (2.7.0.2)
21
- ast (~> 2.4.0)
27
+ byebug (11.1.3)
28
+ concurrent-ruby (1.1.6)
29
+ diff-lcs (1.4.4)
30
+ i18n (1.8.3)
31
+ concurrent-ruby (~> 1.0)
32
+ minitest (5.14.1)
33
+ parallel (1.19.2)
34
+ parser (2.7.1.4)
35
+ ast (~> 2.4.1)
22
36
  rainbow (3.0.0)
23
37
  rake (13.0.1)
38
+ regexp_parser (1.7.1)
39
+ rexml (3.2.4)
24
40
  rspec (3.9.0)
25
41
  rspec-core (~> 3.9.0)
26
42
  rspec-expectations (~> 3.9.0)
27
43
  rspec-mocks (~> 3.9.0)
28
- rspec-core (3.9.1)
29
- rspec-support (~> 3.9.1)
30
- rspec-expectations (3.9.0)
44
+ rspec-core (3.9.2)
45
+ rspec-support (~> 3.9.3)
46
+ rspec-expectations (3.9.2)
31
47
  diff-lcs (>= 1.2.0, < 2.0)
32
48
  rspec-support (~> 3.9.0)
33
49
  rspec-mocks (3.9.1)
34
50
  diff-lcs (>= 1.2.0, < 2.0)
35
51
  rspec-support (~> 3.9.0)
36
- rspec-support (3.9.2)
37
- rubocop (0.79.0)
38
- jaro_winkler (~> 1.5.1)
52
+ rspec-support (3.9.3)
53
+ rubocop (0.88.0)
39
54
  parallel (~> 1.10)
40
- parser (>= 2.7.0.1)
55
+ parser (>= 2.7.1.1)
41
56
  rainbow (>= 2.2.2, < 4.0)
57
+ regexp_parser (>= 1.7)
58
+ rexml
59
+ rubocop-ast (>= 0.1.0, < 1.0)
42
60
  ruby-progressbar (~> 1.7)
43
- unicode-display_width (>= 1.4.0, < 1.7)
44
- rubocop-performance (1.5.2)
45
- rubocop (>= 0.71.0)
61
+ unicode-display_width (>= 1.4.0, < 2.0)
62
+ rubocop-ast (0.1.0)
63
+ parser (>= 2.7.0.1)
64
+ rubocop-performance (1.7.0)
65
+ rubocop (>= 0.82.0)
66
+ rubocop-rspec (1.42.0)
67
+ rubocop (>= 0.87.0)
46
68
  ruby-progressbar (1.10.1)
47
- unicode-display_width (1.6.1)
69
+ thread_safe (0.3.6)
70
+ tzinfo (1.2.7)
71
+ thread_safe (~> 0.1)
72
+ unicode-display_width (1.7.0)
73
+ zeitwerk (2.3.1)
48
74
 
49
75
  PLATFORMS
50
76
  ruby
51
77
 
52
78
  DEPENDENCIES
79
+ activerecord
53
80
  bundler
54
81
  bunny-mock
55
82
  byebug
@@ -58,6 +85,7 @@ DEPENDENCIES
58
85
  rspec
59
86
  rubocop
60
87
  rubocop-performance
88
+ rubocop-rspec
61
89
 
62
90
  BUNDLED WITH
63
91
  2.1.4
data/README.md CHANGED
@@ -1,10 +1,9 @@
1
+ [![Gem Version](https://badge.fury.io/rb/jackhammer.svg)](https://rubygems.org/gems/jackhammer)
1
2
  [![Build Status](https://travis-ci.org/RenoFi/jackhammer.svg?branch=master)](https://travis-ci.org/RenoFi/jackhammer)
2
- [![GitHub issues](https://img.shields.io/github/issues/renofi/jackhammer)](https://github.com/renofi/jackhammer/issues)
3
- [![GitHub license](https://img.shields.io/github/license/renofi/jackhammer)](https://github.com/RenoFi/jackhammer/blob/master/LICENSE.txt)
4
3
 
5
- # Jackhammer
4
+ # jackhammer
6
5
 
7
- Jackhammer is an opinionated, configurable facade over the RabbitMQ Bunny
6
+ `jackhammer` is an opinionated, configurable facade over the RabbitMQ Bunny
8
7
  module.
9
8
 
10
9
  ## Installation
@@ -180,7 +179,3 @@ Bug reports and pull requests are welcome on GitHub at https://github.com/renofi
180
179
  ## License
181
180
 
182
181
  The gem is available as open source under the terms of the [MIT License](https://opensource.org/licenses/MIT).
183
-
184
- ## Code of Conduct
185
-
186
- Everyone interacting in the Jackhammer project’s codebases, issue trackers, chat rooms and mailing lists is expected to follow the [code of conduct](https://github.com/renofi/jackhammer/blob/master/CODE_OF_CONDUCT.md).
data/Rakefile CHANGED
@@ -5,4 +5,4 @@ require 'rubocop/rake_task'
5
5
  RSpec::Core::RakeTask.new(:spec)
6
6
  RuboCop::RakeTask.new
7
7
 
8
- task default: %i[rubocop spec]
8
+ task default: %i[spec rubocop:auto_correct]
@@ -3,27 +3,28 @@ $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
3
  require 'jackhammer/version'
4
4
 
5
5
  Gem::Specification.new do |spec|
6
- spec.name = 'jackhammer'
7
- spec.version = Jackhammer::VERSION
8
- spec.authors = ['Scott Serok']
9
- spec.email = ['scott@renofi.com']
6
+ spec.name = 'jackhammer'
7
+ spec.version = Jackhammer::VERSION
8
+ spec.authors = ['Scott Serok']
9
+ spec.email = ['scott@renofi.com']
10
10
 
11
- spec.summary = 'Jackhammer is an opinionated facade over RabbitMQ Bunny'
12
- spec.homepage = 'https://github.com/renofi/jackhammer'
13
- spec.license = 'MIT'
11
+ spec.summary = 'Jackhammer is an opinionated facade over RabbitMQ Bunny'
12
+ spec.homepage = 'https://github.com/renofi/jackhammer'
13
+ spec.license = 'MIT'
14
14
 
15
- spec.metadata['homepage_uri'] = spec.homepage
16
- spec.metadata['source_code_uri'] = spec.homepage
15
+ spec.metadata['homepage_uri'] = spec.homepage
16
+ spec.metadata['source_code_uri'] = spec.homepage
17
17
 
18
18
  spec.files = Dir.chdir(File.expand_path(__dir__)) do
19
19
  `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(bin/|spec/|\.rub)}) }
20
20
  end
21
- spec.bindir = 'exe'
22
- spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
21
+ spec.bindir = 'exe'
22
+ spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
23
23
  spec.require_paths = ['lib']
24
24
 
25
25
  spec.add_dependency 'bunny', '~> 2.14'
26
26
 
27
+ spec.add_development_dependency 'activerecord'
27
28
  spec.add_development_dependency 'bundler'
28
29
  spec.add_development_dependency 'bunny-mock'
29
30
  spec.add_development_dependency 'byebug'
@@ -31,4 +32,5 @@ Gem::Specification.new do |spec|
31
32
  spec.add_development_dependency 'rspec'
32
33
  spec.add_development_dependency 'rubocop'
33
34
  spec.add_development_dependency 'rubocop-performance'
35
+ spec.add_development_dependency 'rubocop-rspec'
34
36
  end
@@ -38,7 +38,7 @@ module Jackhammer
38
38
  @topics ||= TopicManager.topics
39
39
  end
40
40
 
41
- def publish_options(options = {}, time: Time.now.utc)
41
+ def publish_options(options = {}, time = Time.now.utc)
42
42
  configuration.publish_options.dup.merge(options).tap do |opts|
43
43
  opts[:timestamp] = time.to_i
44
44
  opts[:app_id] ||= configuration.app_name
@@ -0,0 +1,60 @@
1
+ module Jackhammer
2
+ class ConfigurationValidator
3
+ attr_accessor :config_yaml, :environment, :errors
4
+
5
+ def initialize
6
+ @errors = []
7
+ end
8
+
9
+ def validate
10
+ validate_environment_defined
11
+ return if errors.any?
12
+ validate_topic_exchange_defined
13
+ return if errors.any?
14
+ validate_queues_defined
15
+ return if errors.any?
16
+ validate_handlers_defined
17
+ end
18
+
19
+ def validate_environment_defined
20
+ return if config_yaml[environment]
21
+
22
+ add_error("Environment '#{environment}' is not defined")
23
+ end
24
+
25
+ def validate_topic_exchange_defined
26
+ return if config_yaml[environment].keys.any?
27
+
28
+ add_error("Environment '#{environment}' does not define a topic exchange")
29
+ end
30
+
31
+ def validate_queues_defined
32
+ topics = config_yaml[environment].keys
33
+ topics.each do |topic|
34
+ begin
35
+ next if config_yaml[environment][topic]['queues']
36
+ rescue StandardError
37
+ false
38
+ end
39
+
40
+ add_error("Topic '#{topic}' does not define any queues")
41
+ end
42
+ end
43
+
44
+ def validate_handlers_defined
45
+ config_yaml[environment].each do |exchange_name, exchange_config|
46
+ exchange_config['queues'].each do |qconfig|
47
+ Object.const_get(qconfig['handler'])
48
+ rescue NameError
49
+ add_error("Uninitialized constant #{qconfig['handler']}")
50
+ end
51
+ end
52
+ end
53
+
54
+ private
55
+
56
+ def add_error(str)
57
+ @errors << str
58
+ end
59
+ end
60
+ end
@@ -15,6 +15,8 @@ module Jackhammer
15
15
  else
16
16
  handler.call message
17
17
  end
18
+ ensure
19
+ ActiveRecord::Base.clear_active_connections! if defined?(ActiveRecord::Base)
18
20
  end
19
21
  end
20
22
  end
@@ -7,7 +7,7 @@ module Jackhammer
7
7
  def self.from_routing_key(routing_key)
8
8
  fail(InvalidConfigError, "app_name must be set to determine queue_name from routing_key") if app_name.to_s.empty?
9
9
 
10
- "#{app_name}_#{routing_key}_q".gsub(/[^\w]+/, '_').gsub(/[_]+/, '_')
10
+ "#{app_name}_#{routing_key}_q".gsub(/[^\w]+/, '_').squeeze('_')
11
11
  end
12
12
  end
13
13
  end
@@ -0,0 +1,70 @@
1
+ require 'rake'
2
+ require 'rake/tasklib'
3
+ require 'yaml'
4
+ require 'jackhammer/configuration_validator'
5
+
6
+ module Jackhammer
7
+ class RakeTask < ::Rake::TaskLib
8
+ # Name of test task. (default is :jackhammer)
9
+ attr_accessor :name
10
+
11
+ # File path of the configuration file. (default is ./config/jackhammer.yml)
12
+ attr_accessor :path
13
+
14
+ # Description of the test task. (default is 'Validate Jackhammer
15
+ # configuration')
16
+ attr_accessor :description
17
+
18
+ # Task prerequisites.
19
+ attr_accessor :deps
20
+
21
+ # Specifies the environment to inspect. (default is 'production')
22
+ attr_accessor :env
23
+
24
+ def initialize
25
+ @name = :jackhammer
26
+ @env = 'production'
27
+ @path = './config/jackhammer.yml'
28
+ @description = 'Validate Jackhammer configuration'
29
+ @deps = []
30
+ yield self if block_given?
31
+ if @name.is_a?(Hash)
32
+ @deps = @name.values.first
33
+ @name = @name.keys.first
34
+ end
35
+ define
36
+ end
37
+
38
+ def define
39
+ desc @description
40
+ task @name => Array(deps) do
41
+ validator = ConfigurationValidator.new
42
+ validator.config_yaml = YAML.safe_load(File.read(@path))
43
+ validator.environment = env
44
+ validator.validate
45
+ print_results validator.errors
46
+ end
47
+ end
48
+
49
+ private
50
+
51
+ def print_results(errors)
52
+ puts "Jackhammer configuration #{path}\n"
53
+ if errors.any?
54
+ puts red("Problems identified: #{errors.size}\n")
55
+ errors.each { |error| puts red(error) }
56
+ exit 1
57
+ else
58
+ puts green('OK')
59
+ end
60
+ end
61
+
62
+ def red(text)
63
+ "\e[1;31m#{text}\e[0m"
64
+ end
65
+
66
+ def green(text)
67
+ "\e[1;32m#{text}\e[0m"
68
+ end
69
+ end
70
+ end
@@ -1,3 +1,3 @@
1
1
  module Jackhammer
2
- VERSION = '1.3.0'.freeze
2
+ VERSION = '1.3.5'.freeze
3
3
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: jackhammer
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.3.0
4
+ version: 1.3.5
5
5
  platform: ruby
6
6
  authors:
7
7
  - Scott Serok
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-02-10 00:00:00.000000000 Z
11
+ date: 2020-07-29 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: bunny
@@ -24,6 +24,20 @@ dependencies:
24
24
  - - "~>"
25
25
  - !ruby/object:Gem::Version
26
26
  version: '2.14'
27
+ - !ruby/object:Gem::Dependency
28
+ name: activerecord
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - ">="
32
+ - !ruby/object:Gem::Version
33
+ version: '0'
34
+ type: :development
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - ">="
39
+ - !ruby/object:Gem::Version
40
+ version: '0'
27
41
  - !ruby/object:Gem::Dependency
28
42
  name: bundler
29
43
  requirement: !ruby/object:Gem::Requirement
@@ -122,6 +136,20 @@ dependencies:
122
136
  - - ">="
123
137
  - !ruby/object:Gem::Version
124
138
  version: '0'
139
+ - !ruby/object:Gem::Dependency
140
+ name: rubocop-rspec
141
+ requirement: !ruby/object:Gem::Requirement
142
+ requirements:
143
+ - - ">="
144
+ - !ruby/object:Gem::Version
145
+ version: '0'
146
+ type: :development
147
+ prerelease: false
148
+ version_requirements: !ruby/object:Gem::Requirement
149
+ requirements:
150
+ - - ">="
151
+ - !ruby/object:Gem::Version
152
+ version: '0'
125
153
  description:
126
154
  email:
127
155
  - scott@renofi.com
@@ -131,10 +159,14 @@ extensions: []
131
159
  extra_rdoc_files: []
132
160
  files:
133
161
  - ".dependabot/config.yml"
162
+ - ".github/ISSUE_TEMPLATE/bug_report.md"
163
+ - ".github/ISSUE_TEMPLATE/config.yml"
164
+ - ".github/ISSUE_TEMPLATE/story.md"
165
+ - ".github/PULL_REQUEST_TEMPLATE.md"
166
+ - ".github/workflows/auto-approve.yml"
134
167
  - ".gitignore"
135
168
  - ".rspec"
136
169
  - ".travis.yml"
137
- - CODE_OF_CONDUCT.md
138
170
  - Gemfile
139
171
  - Gemfile.lock
140
172
  - LICENSE.txt
@@ -145,11 +177,13 @@ files:
145
177
  - lib/jackhammer.rb
146
178
  - lib/jackhammer/cli.rb
147
179
  - lib/jackhammer/configuration.rb
180
+ - lib/jackhammer/configuration_validator.rb
148
181
  - lib/jackhammer/exceptions.rb
149
182
  - lib/jackhammer/log.rb
150
183
  - lib/jackhammer/message_receiver.rb
151
184
  - lib/jackhammer/queue.rb
152
185
  - lib/jackhammer/queue_name.rb
186
+ - lib/jackhammer/rake_task.rb
153
187
  - lib/jackhammer/server.rb
154
188
  - lib/jackhammer/topic.rb
155
189
  - lib/jackhammer/topic_manager.rb
@@ -175,7 +209,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
175
209
  - !ruby/object:Gem::Version
176
210
  version: '0'
177
211
  requirements: []
178
- rubygems_version: 3.0.6
212
+ rubygems_version: 3.1.2
179
213
  signing_key:
180
214
  specification_version: 4
181
215
  summary: Jackhammer is an opinionated facade over RabbitMQ Bunny
@@ -1,74 +0,0 @@
1
- # Contributor Covenant Code of Conduct
2
-
3
- ## Our Pledge
4
-
5
- In the interest of fostering an open and welcoming environment, we as
6
- contributors and maintainers pledge to making participation in our project and
7
- our community a harassment-free experience for everyone, regardless of age, body
8
- size, disability, ethnicity, gender identity and expression, level of experience,
9
- nationality, personal appearance, race, religion, or sexual identity and
10
- orientation.
11
-
12
- ## Our Standards
13
-
14
- Examples of behavior that contributes to creating a positive environment
15
- include:
16
-
17
- * Using welcoming and inclusive language
18
- * Being respectful of differing viewpoints and experiences
19
- * Gracefully accepting constructive criticism
20
- * Focusing on what is best for the community
21
- * Showing empathy towards other community members
22
-
23
- Examples of unacceptable behavior by participants include:
24
-
25
- * The use of sexualized language or imagery and unwelcome sexual attention or
26
- advances
27
- * Trolling, insulting/derogatory comments, and personal or political attacks
28
- * Public or private harassment
29
- * Publishing others' private information, such as a physical or electronic
30
- address, without explicit permission
31
- * Other conduct which could reasonably be considered inappropriate in a
32
- professional setting
33
-
34
- ## Our Responsibilities
35
-
36
- Project maintainers are responsible for clarifying the standards of acceptable
37
- behavior and are expected to take appropriate and fair corrective action in
38
- response to any instances of unacceptable behavior.
39
-
40
- Project maintainers have the right and responsibility to remove, edit, or
41
- reject comments, commits, code, wiki edits, issues, and other contributions
42
- that are not aligned to this Code of Conduct, or to ban temporarily or
43
- permanently any contributor for other behaviors that they deem inappropriate,
44
- threatening, offensive, or harmful.
45
-
46
- ## Scope
47
-
48
- This Code of Conduct applies both within project spaces and in public spaces
49
- when an individual is representing the project or its community. Examples of
50
- representing a project or community include using an official project e-mail
51
- address, posting via an official social media account, or acting as an appointed
52
- representative at an online or offline event. Representation of a project may be
53
- further defined and clarified by project maintainers.
54
-
55
- ## Enforcement
56
-
57
- Instances of abusive, harassing, or otherwise unacceptable behavior may be
58
- reported by contacting the project team at scott@renofi.com. All
59
- complaints will be reviewed and investigated and will result in a response that
60
- is deemed necessary and appropriate to the circumstances. The project team is
61
- obligated to maintain confidentiality with regard to the reporter of an incident.
62
- Further details of specific enforcement policies may be posted separately.
63
-
64
- Project maintainers who do not follow or enforce the Code of Conduct in good
65
- faith may face temporary or permanent repercussions as determined by other
66
- members of the project's leadership.
67
-
68
- ## Attribution
69
-
70
- This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
71
- available at [http://contributor-covenant.org/version/1/4][version]
72
-
73
- [homepage]: http://contributor-covenant.org
74
- [version]: http://contributor-covenant.org/version/1/4/