rubocop-d3mlabs 1.0.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (7) hide show
  1. checksums.yaml +7 -0
  2. data/CHANGELOG.md +9 -0
  3. data/LICENSE.txt +21 -0
  4. data/README.md +37 -0
  5. data/VERSION +1 -0
  6. data/rubocop.yml +47 -0
  7. metadata +81 -0
checksums.yaml ADDED
@@ -0,0 +1,7 @@
1
+ ---
2
+ SHA256:
3
+ metadata.gz: d481b3ffd4994bf02d312068f73f0166878f0720a9822fa67093e8c87170149d
4
+ data.tar.gz: 6b9f36fbd4447078e692bbeecbb1e1963b283229b37f19091e582afc3f662582
5
+ SHA512:
6
+ metadata.gz: fa311fc0543d9ebc3d31f8d5a37db8d86c5872ae1cd891f410851d4d6064e3e0784a5a04ed21291fd3cf27ffaf54a60460094692e8bee94a060f7aaf3564538a
7
+ data.tar.gz: e8f7819e511f1b73c32143165fc5d55f0471dc5b5b82ae83c96b9dd7e9957b0f9c42da0411e08608cca0b5ce23832a7006ee6f06e5a00e80d86f389eacea7264
data/CHANGELOG.md ADDED
@@ -0,0 +1,9 @@
1
+ # Changelog
2
+ All notable changes to this project will be documented in this file.
3
+
4
+ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
5
+ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
6
+
7
+ ## [1.0.0] - 2026-11-09
8
+ ### Added
9
+ - `rubocop.yml`: inherits `rubocop-shopify`, loads `rubocop-sorbet`, and layers the org's rules — `Style/EndlessMethod: disallow`, `Sorbet/ValidSigil: RequireSigilOnAllFiles`, `AllCops: SuggestExtensions: false`, and the RSpock-dialect exclusions of `test/**/*` from `Lint/Void` and `Lint/BinaryOperatorWithIdenticalOperands`.
data/LICENSE.txt ADDED
@@ -0,0 +1,21 @@
1
+ The MIT License (MIT)
2
+
3
+ Copyright (c) 2026 Jean-Philippe Duchesne
4
+
5
+ Permission is hereby granted, free of charge, to any person obtaining a copy
6
+ of this software and associated documentation files (the "Software"), to deal
7
+ in the Software without restriction, including without limitation the rights
8
+ to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9
+ copies of the Software, and to permit persons to whom the Software is
10
+ furnished to do so, subject to the following conditions:
11
+
12
+ The above copyright notice and this permission notice shall be included in
13
+ all copies or substantial portions of the Software.
14
+
15
+ THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16
+ IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17
+ FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18
+ AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19
+ LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20
+ OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN
21
+ THE SOFTWARE.
data/README.md ADDED
@@ -0,0 +1,37 @@
1
+ # rubocop-d3mlabs
2
+
3
+ d3mlabs' RuboCop configuration: [Shopify's style guide](https://github.com/Shopify/ruby-style-guide) plus the org's rules, shipped as a gem the way `rubocop-shopify` is. The payload is one file, [`rubocop.yml`](rubocop.yml); there are no cops of its own.
4
+
5
+ ## Use
6
+
7
+ ```ruby
8
+ # Gemfile (or dependencies.rb, for a dev-managed repo)
9
+ gem "rubocop-d3mlabs", require: false
10
+ ```
11
+
12
+ ```yaml
13
+ # .rubocop.yml
14
+ inherit_gem:
15
+ rubocop-d3mlabs: rubocop.yml
16
+ ```
17
+
18
+ `rubocop-shopify` and `rubocop-sorbet` arrive as its dependencies; a consumer declares neither. Keep only repo-local facts in your own `.rubocop.yml` — excluded paths, `Sorbet/StrictSigil`'s include set and holdouts. A rule every d3mlabs Ruby repo should follow belongs in this gem.
19
+
20
+ ## What it adds over rubocop-shopify
21
+
22
+ | Cop | Setting | Why |
23
+ | --- | --- | --- |
24
+ | `Style/EndlessMethod` | `disallow` | A method is `def` / body / `end`; the endless form reads as an assignment and splits the code into two spellings. |
25
+ | `Sorbet/ValidSigil` | `RequireSigilOnAllFiles: true` | Every Ruby file declares a `typed:` sigil; how strict is each repo's call. |
26
+ | `AllCops` | `SuggestExtensions: false` | — |
27
+ | `Lint/Void`, `Lint/BinaryOperatorWithIdenticalOperands` | `Exclude: test/**/*` | Tests are in the [RSpock](https://github.com/rspockframework/rspock) dialect: bare comparisons and block-name constants are rewritten into assertions, not evaluated. |
28
+
29
+ ## Development
30
+
31
+ A [dev](https://github.com/d3mlabs/dev) project: `dev up` installs the toolchain and gems from `dependencies.rb`, `dev test` runs the suite (the config is loaded through RuboCop's own loader and asserted), `dev style` lints the repo with the config it ships.
32
+
33
+ Releasing is `dev release [<version>]` — bumps `VERSION`, tags, pushes, and attaches `rubocop-d3mlabs-<version>.gem` to the GitHub release — after which [`release.yml`](.github/workflows/release.yml) publishes that exact asset to rubygems.org as a [trusted publisher](https://guides.rubygems.org/trusted-publishing/) via `dev deploy rubygems --release <version>`.
34
+
35
+ ## License
36
+
37
+ MIT.
data/VERSION ADDED
@@ -0,0 +1 @@
1
+ 1.0.0
data/rubocop.yml ADDED
@@ -0,0 +1,47 @@
1
+ # d3mlabs' RuboCop configuration: Shopify's style guide plus the org's rules.
2
+ #
3
+ # Consumers inherit it as a whole —
4
+ #
5
+ # inherit_gem:
6
+ # rubocop-d3mlabs: rubocop.yml
7
+ #
8
+ # — and keep only repo-local facts (excluded paths, `Sorbet/StrictSigil`'s
9
+ # include set and holdouts) in their own .rubocop.yml. A rule that every
10
+ # d3mlabs Ruby repo should follow belongs here, not there.
11
+
12
+ inherit_gem:
13
+ rubocop-shopify: rubocop.yml
14
+
15
+ plugins:
16
+ - rubocop-sorbet
17
+
18
+ # A consumer's `Exclude` lists add to the ones inherited here, never replace
19
+ # them.
20
+ inherit_mode:
21
+ merge:
22
+ - Exclude
23
+
24
+ AllCops:
25
+ SuggestExtensions: false
26
+
27
+ # A method is `def` / body / `end`. The endless form (`def x = …`) reads as
28
+ # an assignment, hides a multi-clause body on one line, and splits the org's
29
+ # code into two spellings of the same thing.
30
+ Style/EndlessMethod:
31
+ EnforcedStyle: disallow
32
+
33
+ # Every Ruby file declares a `typed:` sigil. How strict is each repo's call
34
+ # (`Sorbet/StrictSigil`); that there is one is not.
35
+ Sorbet/ValidSigil:
36
+ RequireSigilOnAllFiles: true
37
+
38
+ # Tests are written in the RSpock dialect: bare comparisons in Then/Expect
39
+ # blocks, block-name constants (Given/When/Then/Where/Cleanup) and
40
+ # Where-table rows (`a | b`, sometimes with identical operands) are rewritten
41
+ # into assertions by the AST transform, not evaluated for value.
42
+ Lint/Void:
43
+ Exclude:
44
+ - test/**/*
45
+ Lint/BinaryOperatorWithIdenticalOperands:
46
+ Exclude:
47
+ - test/**/*
metadata ADDED
@@ -0,0 +1,81 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: rubocop-d3mlabs
3
+ version: !ruby/object:Gem::Version
4
+ version: 1.0.0
5
+ platform: ruby
6
+ authors:
7
+ - Jean-Philippe Duchesne
8
+ autorequire:
9
+ bindir: bin
10
+ cert_chain: []
11
+ date: 2026-11-09 00:00:00.000000000 Z
12
+ dependencies:
13
+ - !ruby/object:Gem::Dependency
14
+ name: rubocop-shopify
15
+ requirement: !ruby/object:Gem::Requirement
16
+ requirements:
17
+ - - "~>"
18
+ - !ruby/object:Gem::Version
19
+ version: '3.0'
20
+ type: :runtime
21
+ prerelease: false
22
+ version_requirements: !ruby/object:Gem::Requirement
23
+ requirements:
24
+ - - "~>"
25
+ - !ruby/object:Gem::Version
26
+ version: '3.0'
27
+ - !ruby/object:Gem::Dependency
28
+ name: rubocop-sorbet
29
+ requirement: !ruby/object:Gem::Requirement
30
+ requirements:
31
+ - - "~>"
32
+ - !ruby/object:Gem::Version
33
+ version: '0.10'
34
+ type: :runtime
35
+ prerelease: false
36
+ version_requirements: !ruby/object:Gem::Requirement
37
+ requirements:
38
+ - - "~>"
39
+ - !ruby/object:Gem::Version
40
+ version: '0.10'
41
+ description: 'One rubocop.yml every d3mlabs Ruby repo inherits (`inherit_gem: rubocop-d3mlabs:
42
+ rubocop.yml`): Shopify''s style guide, rubocop-sorbet, and the org''s own rules
43
+ on top. No cops of its own.'
44
+ email:
45
+ - jpduchesne89@gmail.com
46
+ executables: []
47
+ extensions: []
48
+ extra_rdoc_files: []
49
+ files:
50
+ - CHANGELOG.md
51
+ - LICENSE.txt
52
+ - README.md
53
+ - VERSION
54
+ - rubocop.yml
55
+ homepage: https://github.com/d3mlabs/rubocop-d3mlabs
56
+ licenses:
57
+ - MIT
58
+ metadata:
59
+ source_code_uri: https://github.com/d3mlabs/rubocop-d3mlabs
60
+ changelog_uri: https://github.com/d3mlabs/rubocop-d3mlabs/blob/main/CHANGELOG.md
61
+ rubygems_mfa_required: 'true'
62
+ post_install_message:
63
+ rdoc_options: []
64
+ require_paths:
65
+ - lib
66
+ required_ruby_version: !ruby/object:Gem::Requirement
67
+ requirements:
68
+ - - ">="
69
+ - !ruby/object:Gem::Version
70
+ version: '3.3'
71
+ required_rubygems_version: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
76
+ requirements: []
77
+ rubygems_version: 3.0.3.1
78
+ signing_key:
79
+ specification_version: 4
80
+ summary: 'd3mlabs'' RuboCop configuration: rubocop-shopify plus the org''s rules.'
81
+ test_files: []