cmdx 1.13.0 → 1.14.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 (66) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +84 -76
  3. data/LICENSE.txt +3 -20
  4. data/README.md +8 -7
  5. data/lib/cmdx/attribute.rb +21 -5
  6. data/lib/cmdx/context.rb +16 -0
  7. data/lib/cmdx/executor.rb +9 -9
  8. data/lib/cmdx/result.rb +27 -7
  9. data/lib/cmdx/task.rb +19 -0
  10. data/lib/cmdx/version.rb +1 -1
  11. data/mkdocs.yml +62 -36
  12. metadata +3 -57
  13. data/.cursor/prompts/docs.md +0 -12
  14. data/.cursor/prompts/llms.md +0 -8
  15. data/.cursor/prompts/rspec.md +0 -24
  16. data/.cursor/prompts/yardoc.md +0 -15
  17. data/.cursor/rules/cursor-instructions.mdc +0 -68
  18. data/.irbrc +0 -18
  19. data/.rspec +0 -4
  20. data/.rubocop.yml +0 -95
  21. data/.ruby-version +0 -1
  22. data/.yard-lint.yml +0 -174
  23. data/.yardopts +0 -7
  24. data/docs/.DS_Store +0 -0
  25. data/docs/assets/favicon.ico +0 -0
  26. data/docs/assets/favicon.svg +0 -1
  27. data/docs/attributes/coercions.md +0 -155
  28. data/docs/attributes/defaults.md +0 -77
  29. data/docs/attributes/definitions.md +0 -283
  30. data/docs/attributes/naming.md +0 -68
  31. data/docs/attributes/transformations.md +0 -63
  32. data/docs/attributes/validations.md +0 -336
  33. data/docs/basics/chain.md +0 -108
  34. data/docs/basics/context.md +0 -121
  35. data/docs/basics/execution.md +0 -152
  36. data/docs/basics/setup.md +0 -107
  37. data/docs/callbacks.md +0 -157
  38. data/docs/configuration.md +0 -314
  39. data/docs/deprecation.md +0 -143
  40. data/docs/getting_started.md +0 -137
  41. data/docs/index.md +0 -134
  42. data/docs/internationalization.md +0 -126
  43. data/docs/interruptions/exceptions.md +0 -52
  44. data/docs/interruptions/faults.md +0 -169
  45. data/docs/interruptions/halt.md +0 -216
  46. data/docs/logging.md +0 -90
  47. data/docs/middlewares.md +0 -191
  48. data/docs/outcomes/result.md +0 -197
  49. data/docs/outcomes/states.md +0 -66
  50. data/docs/outcomes/statuses.md +0 -65
  51. data/docs/retries.md +0 -121
  52. data/docs/stylesheets/extra.css +0 -42
  53. data/docs/tips_and_tricks.md +0 -157
  54. data/docs/workflows.md +0 -226
  55. data/examples/active_record_database_transaction.md +0 -27
  56. data/examples/active_record_query_tagging.md +0 -46
  57. data/examples/flipper_feature_flags.md +0 -50
  58. data/examples/paper_trail_whatdunnit.md +0 -39
  59. data/examples/redis_idempotency.md +0 -71
  60. data/examples/sentry_error_tracking.md +0 -46
  61. data/examples/sidekiq_async_execution.md +0 -29
  62. data/examples/stoplight_circuit_breaker.md +0 -36
  63. data/src/cmdx-dark-logo.png +0 -0
  64. data/src/cmdx-favicon.svg +0 -1
  65. data/src/cmdx-light-logo.png +0 -0
  66. data/src/cmdx-logo.svg +0 -1
data/mkdocs.yml CHANGED
@@ -54,6 +54,8 @@ theme:
54
54
  - navigation.expand
55
55
  - navigation.path
56
56
  - navigation.sections
57
+ - navigation.tabs
58
+ - navigation.tabs.sticky
57
59
  - navigation.top
58
60
  - navigation.tracking
59
61
  - search.highlight
@@ -81,9 +83,25 @@ markdown_extensions:
81
83
  - tables
82
84
  - toc:
83
85
  permalink: true
86
+ title: On this page
84
87
 
85
88
  plugins:
86
89
  - search
90
+ - rss:
91
+ match_path: blog/posts/.*
92
+ date_from_meta:
93
+ as_creation: date
94
+ categories:
95
+ - categories
96
+ - blog:
97
+ blog_dir: blog
98
+ blog_toc: true
99
+ post_date_format: long
100
+ post_url_format: "{slug}"
101
+ archive_date_format: MMMM yyyy
102
+ categories_allowed:
103
+ - Tutorials
104
+ - Updates
87
105
  - llmstxt:
88
106
  markdown_description: >-
89
107
  CMDx is a Ruby framework for building maintainable, observable business logic through composable command/service objects.
@@ -124,51 +142,59 @@ plugins:
124
142
  - workflows.md: Composing multiple tasks into sequential pipelines with conditional execution
125
143
  More:
126
144
  - tips_and_tricks.md: Best practices, patterns, and techniques for maintainable CMDx applications
145
+ Ecosystem:
146
+ - cmdx-rspec: RSpec test matchers (https://github.com/drexed/cmdx-rspec)
127
147
 
128
148
  nav:
129
149
  - Home: index.md
130
- - Getting Started: getting_started.md
131
- - Configuration: configuration.md
132
- - Basics:
133
- - Setup: basics/setup.md
134
- - Execution: basics/execution.md
135
- - Context: basics/context.md
136
- - Chain: basics/chain.md
137
- - Interruptions:
138
- - Halt: interruptions/halt.md
139
- - Faults: interruptions/faults.md
140
- - Exceptions: interruptions/exceptions.md
141
- - Outcomes:
142
- - Result: outcomes/result.md
143
- - States: outcomes/states.md
144
- - Statuses: outcomes/statuses.md
145
- - Attributes:
146
- - Definitions: attributes/definitions.md
147
- - Naming: attributes/naming.md
148
- - Coercions: attributes/coercions.md
149
- - Validations: attributes/validations.md
150
- - Defaults: attributes/defaults.md
151
- - Transformations: attributes/transformations.md
152
- - Features:
153
- - Callbacks: callbacks.md
154
- - Middlewares: middlewares.md
155
- - Logging: logging.md
156
- - Internationalization: internationalization.md
157
- - Retries: retries.md
158
- - Deprecation: deprecation.md
159
- - Workflows: workflows.md
160
- - More:
161
- - Tips and Tricks: tips_and_tricks.md
162
- - References:
163
- - API Documentation: https://drexed.github.io/cmdx/api/index.html
164
- - llms.txt: https://drexed.github.io/cmdx/llms.txt
165
- - llms-full.txt: https://drexed.github.io/cmdx/llms-full.txt
150
+ - Documentation:
151
+ - Getting Started: getting_started.md
152
+ - Configuration: configuration.md
153
+ - Basics:
154
+ - Setup: basics/setup.md
155
+ - Execution: basics/execution.md
156
+ - Context: basics/context.md
157
+ - Chain: basics/chain.md
158
+ - Interruptions:
159
+ - Halt: interruptions/halt.md
160
+ - Faults: interruptions/faults.md
161
+ - Exceptions: interruptions/exceptions.md
162
+ - Outcomes:
163
+ - Result: outcomes/result.md
164
+ - States: outcomes/states.md
165
+ - Statuses: outcomes/statuses.md
166
+ - Attributes:
167
+ - Definitions: attributes/definitions.md
168
+ - Naming: attributes/naming.md
169
+ - Coercions: attributes/coercions.md
170
+ - Validations: attributes/validations.md
171
+ - Defaults: attributes/defaults.md
172
+ - Transformations: attributes/transformations.md
173
+ - Features:
174
+ - Callbacks: callbacks.md
175
+ - Middlewares: middlewares.md
176
+ - Logging: logging.md
177
+ - Internationalization: internationalization.md
178
+ - Retries: retries.md
179
+ - Deprecation: deprecation.md
180
+ - Workflows: workflows.md
181
+ - More:
182
+ - Tips and Tricks: tips_and_tricks.md
183
+ - References:
184
+ - API Documentation: https://drexed.github.io/cmdx/api/index.html
185
+ - llms.txt: https://drexed.github.io/cmdx/llms.txt
186
+ - llms-full.txt: https://drexed.github.io/cmdx/llms-full.txt
187
+ - Ecosystem:
188
+ - cmdx-rspec: https://github.com/drexed/cmdx-rspec
189
+ - Blog: blog/index.md
166
190
 
167
191
  extra:
168
192
  generator: false
169
193
  social:
170
194
  - icon: fontawesome/brands/github
171
195
  link: https://github.com/drexed/cmdx
196
+ - icon: fontawesome/solid/rss
197
+ link: https://drexed.github.io/cmdx/feed_rss_created.xml
172
198
 
173
199
  extra_css:
174
200
  - stylesheets/extra.css
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: cmdx
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.13.0
4
+ version: 1.14.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Juan Gomez
@@ -227,61 +227,11 @@ extensions: []
227
227
  extra_rdoc_files: []
228
228
  files:
229
229
  - ".DS_Store"
230
- - ".cursor/prompts/docs.md"
231
- - ".cursor/prompts/llms.md"
232
- - ".cursor/prompts/rspec.md"
233
- - ".cursor/prompts/yardoc.md"
234
- - ".cursor/rules/cursor-instructions.mdc"
235
- - ".irbrc"
236
- - ".rspec"
237
- - ".rubocop.yml"
238
- - ".ruby-version"
239
- - ".yard-lint.yml"
240
- - ".yardopts"
241
230
  - CHANGELOG.md
242
231
  - CODE_OF_CONDUCT.md
243
232
  - LICENSE.txt
244
233
  - README.md
245
234
  - Rakefile
246
- - docs/.DS_Store
247
- - docs/assets/favicon.ico
248
- - docs/assets/favicon.svg
249
- - docs/attributes/coercions.md
250
- - docs/attributes/defaults.md
251
- - docs/attributes/definitions.md
252
- - docs/attributes/naming.md
253
- - docs/attributes/transformations.md
254
- - docs/attributes/validations.md
255
- - docs/basics/chain.md
256
- - docs/basics/context.md
257
- - docs/basics/execution.md
258
- - docs/basics/setup.md
259
- - docs/callbacks.md
260
- - docs/configuration.md
261
- - docs/deprecation.md
262
- - docs/getting_started.md
263
- - docs/index.md
264
- - docs/internationalization.md
265
- - docs/interruptions/exceptions.md
266
- - docs/interruptions/faults.md
267
- - docs/interruptions/halt.md
268
- - docs/logging.md
269
- - docs/middlewares.md
270
- - docs/outcomes/result.md
271
- - docs/outcomes/states.md
272
- - docs/outcomes/statuses.md
273
- - docs/retries.md
274
- - docs/stylesheets/extra.css
275
- - docs/tips_and_tricks.md
276
- - docs/workflows.md
277
- - examples/active_record_database_transaction.md
278
- - examples/active_record_query_tagging.md
279
- - examples/flipper_feature_flags.md
280
- - examples/paper_trail_whatdunnit.md
281
- - examples/redis_idempotency.md
282
- - examples/sentry_error_tracking.md
283
- - examples/sidekiq_async_execution.md
284
- - examples/stoplight_circuit_breaker.md
285
235
  - lib/cmdx.rb
286
236
  - lib/cmdx/.DS_Store
287
237
  - lib/cmdx/attribute.rb
@@ -431,13 +381,9 @@ files:
431
381
  - lib/locales/zh-TW.yml
432
382
  - lib/locales/zh-YUE.yml
433
383
  - mkdocs.yml
434
- - src/cmdx-dark-logo.png
435
- - src/cmdx-favicon.svg
436
- - src/cmdx-light-logo.png
437
- - src/cmdx-logo.svg
438
384
  homepage: https://github.com/drexed/cmdx
439
385
  licenses:
440
- - MIT
386
+ - LGPL-3.0
441
387
  metadata:
442
388
  homepage_uri: https://github.com/drexed/cmdx
443
389
  source_code_uri: https://github.com/drexed/cmdx
@@ -459,7 +405,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
459
405
  - !ruby/object:Gem::Version
460
406
  version: '0'
461
407
  requirements: []
462
- rubygems_version: 3.7.2
408
+ rubygems_version: 4.0.3
463
409
  specification_version: 4
464
410
  summary: CMDx is a framework for building maintainable business processes.
465
411
  test_files: []
@@ -1,12 +0,0 @@
1
- You are a senior Ruby developer with expert knowledge of CMDx and writing documentation.
2
-
3
- Update the active tab using the following guidelines:
4
-
5
- - Follow best practices and implementation
6
- - Use a consistent warm, friendly and professional voice
7
- - Examples should be concise, non-repetitive, and realistic
8
- - Update any pre-existing documentation to match stated rules
9
- - Examples should not cross boundaries or focus
10
- - Docs must cover both typical use cases, including invalid and error conditions
11
- - Use mkdocs Admonitions to emphasize critical information (https://squidfunk.github.io/mkdocs-material/reference/admonitions/)
12
- - Optimize for LLM's including coding and AI agents
@@ -1,8 +0,0 @@
1
- Process the following instructions in the order given:
2
-
3
- 1. Create an `LLM.md` file
4
- 2. Append all files within `docs/**/*.md` into @LLM.md
5
- 2a. Use order outlined under the nav key in @mkdocs.yml
6
- 2b. Process one file at a time faster performance and improved accuracy
7
- 2c. Exclude @index.md and @LLM.md files
8
- 2d. All URLs should be absolute
@@ -1,24 +0,0 @@
1
- You are a senior Ruby developer with expert knowledge of RSpec.
2
-
3
- Add tests for the active tab using the following guidelines:
4
-
5
- - Expectations should be concise, non-repetitive, and realistic (how it would be used in the real world)
6
- - Follow best practices and implementation
7
- - Update any pre-existing specs to match stated rules
8
- - New tests should be consistent with current `spec/cmdx` specs
9
- - Use custom matchers available within `lib/cmdx/rspec`
10
- - Use task helpers available within `spec/support/helpers`
11
- - Use stubs to return predefined values for specific methods. Isolate the unit being tested, but avoid over-mocking; test real behavior when possible (mocks should be used only when necessary)
12
- - Ensure each test is independent; avoid shared state between tests
13
- - Use let and let! to define test data, ensuring minimal and necessary setup
14
- - Context block descriptions should start with the following words: `when`, `with`, `without`
15
- - Organize tests logically using describe for classes/modules and context for different scenarios
16
- - Use subject to define the object under test when appropriate to avoid repetition
17
- - Ensure test file paths mirror the structure of the files being tested, but within the spec directory (e.g., lib/cmdx/task.rb → spec/cmdx/task_spec.rb)
18
- - Use clear and descriptive names for describe, context, and it blocks
19
- - Prefer the expect syntax for assertions to improve readability
20
- - Keep test code concise; avoid unnecessary complexity or duplication
21
- - Tests must cover both typical cases and edge cases, including Invalid and error conditions
22
- - Consider all possible scenarios for each method or behavior and ensure they are tested
23
- - Do NOT include integration or real world examples
24
- - Verify all specs are passing
@@ -1,15 +0,0 @@
1
- You are a senior Ruby developer with expert knowledge of YARDoc.
2
-
3
- Add yardoc to the active tab using the following guidelines:
4
-
5
- - Follow best practices and implementation
6
- - New documentation should be consistent with current `lib/cmdx` documentation
7
- - Examples should be concise, non-repetitive, and realistic
8
- - Avoid unnecessary complexity or duplication
9
- - Update any pre-existing documentation to match stated rules
10
- - Do NOT include `CMDx` module level docs
11
- - Module level docs description should NOT include `@example`
12
- - Method level docs should include `@example`, `param`, `@options`, `@return`, and any `@raise`
13
- - Hash `@params` should expand with possible `@option`
14
- - Module and method level docs should NOT include `@since`
15
- - Add RBS inline comments after YARDoc block
@@ -1,68 +0,0 @@
1
- ---
2
- description:
3
- globs:
4
- alwaysApply: true
5
- ---
6
-
7
- # Ruby Coding Standards
8
-
9
- Follow the official Ruby gem guides for best practices.
10
- Reference the guides outlined in https://guides.rubygems.org
11
-
12
- ## Project Context
13
- CMDx provides a framework for designing and executing complex business logic within service/command objects.
14
- Reference the CMDx documentation in https://github.com/drexed/cmdx/blob/main/LLM.md
15
-
16
- ## Technology Stack
17
- - Ruby 3.4+
18
- - RSpec 3.1+
19
-
20
- ## Development Guidelines
21
- - Performance is critical - benchmark any changes that could affect speed
22
- - Follow existing code patterns and conventions
23
- - Maintain backward compatibility for public API
24
-
25
- ## Code Style and Structure
26
- - Write concise, idiomatic Ruby code with accurate examples
27
- - Follow Ruby conventions and best practices
28
- - Use object-oriented and functional programming patterns as appropriate
29
- - Prefer iteration and modularization over code duplication
30
- - Use descriptive variable and method names (e.g., user_signed_in?, calculate_total)
31
- - Write comprehensive code documentation using the Yardoc format
32
- - Minimize object allocations in hot paths
33
-
34
- ## Naming Conventions
35
- - Use snake_case for file names, method names, and variables
36
- - Use CamelCase for class and module names
37
-
38
- ## Syntax and Formatting
39
- - Follow the Ruby Style Guide (https://rubystyle.guide/)
40
- - Follow Ruby style conventions (2-space indentation, snake_case methods)
41
- - Use Ruby's expressive syntax (e.g., unless, ||=, &.)
42
- - Prefer double quotes for strings
43
- - Respect my Rubocop options
44
- - Run `bundle exec rubocop .` before finalizing any code changes
45
-
46
- ## Performance Optimization
47
- - Use memoization for expensive operations
48
-
49
- ## Testing
50
- - Follow the RSpec Style Guide (https://rspec.rubystyle.guide/)
51
- - Write comprehensive tests using RSpec
52
- - It's ok to put multiple assertions in the same example
53
- - Include both BDD and TDD based tests
54
- - Create test objects to share across tests
55
- - Do NOT make tests for obvious or reflective expectations
56
- - Prefer real objects over mocks. Use `instance_double` if necessary; never `double`
57
- - Don't test declarative configuration
58
- - Use appropriate matchers
59
- - Update tests and update Yardocs after you write code
60
- - Run `bundle rspec .` before finalizing any code changes
61
-
62
- ## Documentation
63
- - Utilize the YARDoc format when documenting Ruby code
64
- - Follow these best practices:
65
- - Avoid redundant comments that merely restate the code
66
- - Keep comments up-to-date with code changes
67
- - Keep documentation consistent
68
- - Update CHANGELOG.md with any changes
data/.irbrc DELETED
@@ -1,18 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require "pp"
4
-
5
- # rubocop:disable Style/MixinUsage
6
- unless defined?(CMDx)
7
- require_relative "lib/cmdx"
8
-
9
- require_relative "spec/support/helpers/task_builders"
10
- require_relative "spec/support/helpers/workflow_builders"
11
- include CMDx::Testing::TaskBuilders
12
- include CMDx::Testing::WorkflowBuilders
13
- end
14
- # rubocop:enable Style/MixinUsage
15
-
16
- def reload!
17
- exec("irb")
18
- end
data/.rspec DELETED
@@ -1,4 +0,0 @@
1
- --backtrace
2
- --color
3
- --format progress
4
- --order random
data/.rubocop.yml DELETED
@@ -1,95 +0,0 @@
1
- plugins:
2
- - rubocop-performance
3
- - rubocop-rake
4
- - rubocop-rspec
5
- AllCops:
6
- NewCops: enable
7
- DisplayCopNames: true
8
- DisplayStyleGuide: true
9
- TargetRubyVersion: 3.1
10
- Gemspec/DevelopmentDependencies:
11
- EnforcedStyle: gemspec
12
- Layout/EmptyLinesAroundAttributeAccessor:
13
- Enabled: true
14
- Layout/EmptyLinesAroundClassBody:
15
- EnforcedStyle: empty_lines_except_namespace
16
- Layout/EmptyLinesAroundModuleBody:
17
- EnforcedStyle: empty_lines_except_namespace
18
- Layout/FirstHashElementIndentation:
19
- EnforcedStyle: consistent
20
- Layout/LineLength:
21
- Enabled: false
22
- Lint/MissingSuper:
23
- Exclude:
24
- - 'spec/**/**/*'
25
- Lint/ShadowedException:
26
- Enabled: false
27
- Lint/UnusedMethodArgument:
28
- Exclude:
29
- - 'lib/cmdx/coercions/**/*'
30
- - 'lib/cmdx/log_formatters/**/*'
31
- - 'lib/cmdx/middlewares/**/*'
32
- - 'lib/cmdx/validators/**/*'
33
- Metrics/AbcSize:
34
- Enabled: false
35
- Metrics/BlockLength:
36
- Enabled: false
37
- Metrics/ClassLength:
38
- Enabled: false
39
- Metrics/CyclomaticComplexity:
40
- Enabled: false
41
- Metrics/MethodLength:
42
- Enabled: false
43
- Metrics/ModuleLength:
44
- Enabled: false
45
- Metrics/PerceivedComplexity:
46
- Enabled: false
47
- Naming/MethodParameterName:
48
- Enabled: false
49
- RSpec/DescribeClass:
50
- Exclude:
51
- - 'spec/integrations/**/*'
52
- RSpec/ExampleLength:
53
- Enabled: false
54
- RSpec/IndexedLet:
55
- Enabled: false
56
- RSpec/MessageSpies:
57
- EnforcedStyle: receive
58
- RSpec/MultipleExpectations:
59
- Enabled: false
60
- RSpec/MultipleMemoizedHelpers:
61
- Enabled: false
62
- RSpec/NestedGroups:
63
- Enabled: false
64
- RSpec/SpecFilePathFormat:
65
- CustomTransform:
66
- CMDx: cmdx
67
- RSpec/SubjectStub:
68
- Enabled: false
69
- RSpec/StubbedMock:
70
- Enabled: false
71
- RSpec/VerifiedDoubleReference:
72
- Enabled: false
73
- Style/ArgumentsForwarding:
74
- Exclude:
75
- - 'lib/cmdx/utils/call.rb'
76
- Style/CaseEquality:
77
- Enabled: false
78
- Style/DocumentDynamicEvalDefinition:
79
- Enabled: false
80
- Style/Documentation:
81
- Enabled: false
82
- Style/DoubleNegation:
83
- Enabled: false
84
- Style/FrozenStringLiteralComment:
85
- Enabled: true
86
- EnforcedStyle: always_true
87
- SafeAutoCorrect: true
88
- Style/ModuleFunction:
89
- EnforcedStyle: extend_self
90
- Style/OptionalBooleanParameter:
91
- Enabled: false
92
- Style/StringConcatenation:
93
- Enabled: false
94
- Style/StringLiterals:
95
- EnforcedStyle: double_quotes
data/.ruby-version DELETED
@@ -1 +0,0 @@
1
- 3.4.5
data/.yard-lint.yml DELETED
@@ -1,174 +0,0 @@
1
- # YARD-Lint Configuration
2
- # See https://github.com/mensfeld/yard-lint for documentation
3
-
4
- # Global settings for all validators
5
- AllValidators:
6
- # YARD command-line options (applied to all validators by default)
7
- YardOptions:
8
- - --private
9
- - --protected
10
-
11
- # Global file exclusion patterns
12
- Exclude:
13
- - '\.git'
14
- - 'vendor/**/*'
15
- - 'node_modules/**/*'
16
- - 'spec/**/*'
17
- - 'test/**/*'
18
-
19
- # Exit code behavior (error, warning, convention, never)
20
- FailOnSeverity: warning
21
-
22
- # Minimum documentation coverage percentage (0-100)
23
- # Fails if coverage is below this threshold
24
- # MinCoverage: 80.0
25
-
26
- # Diff mode settings
27
- DiffMode:
28
- # Default base ref for --diff (auto-detects main/master if not specified)
29
- DefaultBaseRef: ~
30
-
31
- # Documentation validators
32
- Documentation/UndocumentedObjects:
33
- Description: 'Checks for classes, modules, and methods without documentation.'
34
- Enabled: false
35
- Severity: warning
36
- ExcludedMethods:
37
- - 'initialize/0' # Exclude parameter-less initialize
38
- - '/^_/' # Exclude private methods (by convention)
39
-
40
- Documentation/UndocumentedMethodArguments:
41
- Description: 'Checks for method parameters without @param tags.'
42
- Enabled: true
43
- Severity: warning
44
-
45
- Documentation/UndocumentedBooleanMethods:
46
- Description: 'Checks that question mark methods document their boolean return.'
47
- Enabled: true
48
- Severity: warning
49
-
50
- Documentation/UndocumentedOptions:
51
- Description: 'Detects methods with options hash parameters but no @option tags.'
52
- Enabled: true
53
- Severity: warning
54
-
55
- Documentation/MarkdownSyntax:
56
- Description: 'Detects common markdown syntax errors in documentation.'
57
- Enabled: true
58
- Severity: warning
59
-
60
- # Tags validators
61
- Tags/Order:
62
- Description: 'Enforces consistent ordering of YARD tags.'
63
- Enabled: true
64
- Severity: convention
65
- EnforcedOrder:
66
- - param
67
- - option
68
- - return
69
- - raise
70
- - example
71
-
72
- Tags/InvalidTypes:
73
- Description: 'Validates type definitions in @param, @return, @option tags.'
74
- Enabled: true
75
- Severity: warning
76
- ValidatedTags:
77
- - param
78
- - option
79
- - return
80
-
81
- Tags/TypeSyntax:
82
- Description: 'Validates YARD type syntax using YARD parser.'
83
- Enabled: true
84
- Severity: warning
85
- ValidatedTags:
86
- - param
87
- - option
88
- - return
89
- - yieldreturn
90
-
91
- Tags/MeaninglessTag:
92
- Description: 'Detects @param/@option tags on classes, modules, or constants.'
93
- Enabled: true
94
- Severity: warning
95
- CheckedTags:
96
- - param
97
- - option
98
- InvalidObjectTypes:
99
- - class
100
- - module
101
- - constant
102
-
103
- Tags/CollectionType:
104
- Description: 'Validates Hash collection syntax consistency.'
105
- Enabled: true
106
- Severity: convention
107
- EnforcedStyle: long # 'long' for Hash{K => V} (YARD standard), 'short' for {K => V}
108
- ValidatedTags:
109
- - param
110
- - option
111
- - return
112
- - yieldreturn
113
-
114
- Tags/TagTypePosition:
115
- Description: 'Validates type annotation position in tags.'
116
- Enabled: true
117
- Severity: convention
118
- CheckedTags:
119
- - param
120
- - option
121
- # EnforcedStyle: 'type_after_name' (YARD standard: @param name [Type])
122
- # or 'type_first' (@param [Type] name)
123
- EnforcedStyle: type_after_name
124
-
125
- Tags/ApiTags:
126
- Description: 'Enforces @api tags on public objects.'
127
- Enabled: false # Opt-in validator
128
- Severity: warning
129
- AllowedApis:
130
- - public
131
- - private
132
- - internal
133
-
134
- Tags/OptionTags:
135
- Description: 'Requires @option tags for methods with options parameters.'
136
- Enabled: true
137
- Severity: warning
138
-
139
- # Warnings validators - catches YARD parser errors
140
- Warnings/UnknownTag:
141
- Description: 'Detects unknown YARD tags.'
142
- Enabled: false
143
- Severity: error
144
-
145
- Warnings/UnknownDirective:
146
- Description: 'Detects unknown YARD directives.'
147
- Enabled: true
148
- Severity: error
149
-
150
- Warnings/InvalidTagFormat:
151
- Description: 'Detects malformed tag syntax.'
152
- Enabled: true
153
- Severity: error
154
-
155
- Warnings/InvalidDirectiveFormat:
156
- Description: 'Detects malformed directive syntax.'
157
- Enabled: true
158
- Severity: error
159
-
160
- Warnings/DuplicatedParameterName:
161
- Description: 'Detects duplicate @param tags.'
162
- Enabled: true
163
- Severity: error
164
-
165
- Warnings/UnknownParameterName:
166
- Description: 'Detects @param tags for non-existent parameters.'
167
- Enabled: true
168
- Severity: error
169
-
170
- # Semantic validators
171
- Semantic/AbstractMethods:
172
- Description: 'Ensures @abstract methods do not have real implementations.'
173
- Enabled: true
174
- Severity: warning
data/.yardopts DELETED
@@ -1,7 +0,0 @@
1
- --no-private
2
- --output-dir
3
- docs/api
4
- --exclude
5
- lib/generators/**/*.rb
6
- lib/cmdx/railtie.rb
7
- lib/**/*.rb
data/docs/.DS_Store DELETED
Binary file
Binary file
@@ -1 +0,0 @@
1
- <svg xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="1000" height="1000"><g clip-path="url(#SvgjsClipPath1038)"><rect width="1000" height="1000" fill="#ffffff"></rect><g transform="matrix(6.235191420376605,0,0,6.235191420376605,175.46452176081812,150)"><svg xmlns="http://www.w3.org/2000/svg" version="1.1" xmlns:xlink="http://www.w3.org/1999/xlink" width="104.098" height="112.266"><svg width="104.098" height="112.266" viewBox="0 0 60 64.708" xmlns="http://www.w3.org/2000/svg"><path d="M29.907 17.723 26.4 23.17 13.384 3.323h3.507l9.508 14.77 1.938-3.139L18.737 0H7.291L26.4 29.262 45.045 0h-3.97L30 17.54zM9.23 61.293H6.091l18.646-29.447L4.43.093H.46l20.308 31.846L0 64.708l10.985-.092 39.138-61.2h3.323L31.57 37.754l13.662 21.415h3.97L35.445 37.754 59.537.093H48.37zm29.63-23.262 15.047 23.262H43.384l-13.662-20.77-15.508 24.093h3.97l11.63-18 11.723 18H60L41.17 35.354l-.278-.461z" fill="#000"></path></svg></svg></g></g><defs><clipPath id="SvgjsClipPath1038"><rect width="1000" height="1000" x="0" y="0" rx="150" ry="150"></rect></clipPath></defs></svg>