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.
- checksums.yaml +7 -0
- data/CHANGELOG.md +9 -0
- data/LICENSE.txt +21 -0
- data/README.md +37 -0
- data/VERSION +1 -0
- data/rubocop.yml +47 -0
- 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: []
|