cmdx 1.0.1 → 1.1.1
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 +4 -4
- data/.cursor/prompts/docs.md +9 -0
- data/.cursor/prompts/rspec.md +21 -0
- data/.cursor/prompts/yardoc.md +13 -0
- data/.rubocop.yml +2 -0
- data/CHANGELOG.md +29 -3
- data/README.md +2 -1
- data/docs/ai_prompts.md +269 -195
- data/docs/basics/call.md +126 -60
- data/docs/basics/chain.md +190 -160
- data/docs/basics/context.md +242 -154
- data/docs/basics/setup.md +302 -32
- data/docs/callbacks.md +382 -119
- data/docs/configuration.md +211 -49
- data/docs/deprecation.md +245 -0
- data/docs/getting_started.md +161 -39
- data/docs/internationalization.md +590 -70
- data/docs/interruptions/exceptions.md +135 -118
- data/docs/interruptions/faults.md +152 -127
- data/docs/interruptions/halt.md +134 -80
- data/docs/logging.md +183 -120
- data/docs/middlewares.md +165 -392
- data/docs/outcomes/result.md +140 -112
- data/docs/outcomes/states.md +134 -99
- data/docs/outcomes/statuses.md +204 -146
- data/docs/parameters/coercions.md +251 -289
- data/docs/parameters/defaults.md +224 -169
- data/docs/parameters/definitions.md +289 -141
- data/docs/parameters/namespacing.md +250 -161
- data/docs/parameters/validations.md +247 -159
- data/docs/testing.md +196 -203
- data/docs/workflows.md +146 -101
- data/lib/cmdx/.DS_Store +0 -0
- data/lib/cmdx/callback.rb +39 -55
- data/lib/cmdx/callback_registry.rb +80 -73
- data/lib/cmdx/chain.rb +65 -122
- data/lib/cmdx/chain_inspector.rb +23 -116
- data/lib/cmdx/chain_serializer.rb +34 -146
- data/lib/cmdx/coercion.rb +57 -0
- data/lib/cmdx/coercion_registry.rb +113 -0
- data/lib/cmdx/coercions/array.rb +18 -36
- data/lib/cmdx/coercions/big_decimal.rb +21 -33
- data/lib/cmdx/coercions/boolean.rb +21 -40
- data/lib/cmdx/coercions/complex.rb +18 -31
- data/lib/cmdx/coercions/date.rb +20 -39
- data/lib/cmdx/coercions/date_time.rb +22 -39
- data/lib/cmdx/coercions/float.rb +19 -32
- data/lib/cmdx/coercions/hash.rb +22 -41
- data/lib/cmdx/coercions/integer.rb +20 -33
- data/lib/cmdx/coercions/rational.rb +20 -32
- data/lib/cmdx/coercions/string.rb +23 -31
- data/lib/cmdx/coercions/time.rb +24 -40
- data/lib/cmdx/coercions/virtual.rb +14 -31
- data/lib/cmdx/configuration.rb +101 -162
- data/lib/cmdx/context.rb +34 -166
- data/lib/cmdx/core_ext/hash.rb +42 -67
- data/lib/cmdx/core_ext/module.rb +35 -79
- data/lib/cmdx/core_ext/object.rb +63 -98
- data/lib/cmdx/correlator.rb +59 -154
- data/lib/cmdx/error.rb +37 -202
- data/lib/cmdx/errors.rb +153 -216
- data/lib/cmdx/fault.rb +68 -150
- data/lib/cmdx/faults.rb +26 -137
- data/lib/cmdx/immutator.rb +22 -110
- data/lib/cmdx/lazy_struct.rb +110 -186
- data/lib/cmdx/log_formatters/json.rb +14 -40
- data/lib/cmdx/log_formatters/key_value.rb +14 -40
- data/lib/cmdx/log_formatters/line.rb +14 -48
- data/lib/cmdx/log_formatters/logstash.rb +14 -57
- data/lib/cmdx/log_formatters/pretty_json.rb +14 -50
- data/lib/cmdx/log_formatters/pretty_key_value.rb +13 -46
- data/lib/cmdx/log_formatters/pretty_line.rb +16 -54
- data/lib/cmdx/log_formatters/raw.rb +19 -49
- data/lib/cmdx/logger.rb +22 -79
- data/lib/cmdx/logger_ansi.rb +31 -72
- data/lib/cmdx/logger_serializer.rb +74 -103
- data/lib/cmdx/middleware.rb +56 -60
- data/lib/cmdx/middleware_registry.rb +82 -77
- data/lib/cmdx/middlewares/correlate.rb +41 -226
- data/lib/cmdx/middlewares/timeout.rb +46 -185
- data/lib/cmdx/parameter.rb +167 -183
- data/lib/cmdx/parameter_evaluator.rb +231 -0
- data/lib/cmdx/parameter_inspector.rb +37 -55
- data/lib/cmdx/parameter_registry.rb +65 -84
- data/lib/cmdx/parameter_serializer.rb +32 -76
- data/lib/cmdx/railtie.rb +24 -107
- data/lib/cmdx/result.rb +254 -259
- data/lib/cmdx/result_ansi.rb +28 -80
- data/lib/cmdx/result_inspector.rb +34 -70
- data/lib/cmdx/result_logger.rb +23 -77
- data/lib/cmdx/result_serializer.rb +59 -125
- data/lib/cmdx/rspec/matchers.rb +28 -0
- data/lib/cmdx/rspec/result_matchers/be_executed.rb +42 -0
- data/lib/cmdx/rspec/result_matchers/be_failed_task.rb +94 -0
- data/lib/cmdx/rspec/result_matchers/be_skipped_task.rb +94 -0
- data/lib/cmdx/rspec/result_matchers/be_state_matchers.rb +59 -0
- data/lib/cmdx/rspec/result_matchers/be_status_matchers.rb +57 -0
- data/lib/cmdx/rspec/result_matchers/be_successful_task.rb +87 -0
- data/lib/cmdx/rspec/result_matchers/have_bad_outcome.rb +51 -0
- data/lib/cmdx/rspec/result_matchers/have_caused_failure.rb +58 -0
- data/lib/cmdx/rspec/result_matchers/have_chain_index.rb +59 -0
- data/lib/cmdx/rspec/result_matchers/have_context.rb +86 -0
- data/lib/cmdx/rspec/result_matchers/have_empty_metadata.rb +54 -0
- data/lib/cmdx/rspec/result_matchers/have_good_outcome.rb +52 -0
- data/lib/cmdx/rspec/result_matchers/have_metadata.rb +114 -0
- data/lib/cmdx/rspec/result_matchers/have_preserved_context.rb +66 -0
- data/lib/cmdx/rspec/result_matchers/have_received_thrown_failure.rb +64 -0
- data/lib/cmdx/rspec/result_matchers/have_runtime.rb +78 -0
- data/lib/cmdx/rspec/result_matchers/have_thrown_failure.rb +76 -0
- data/lib/cmdx/rspec/task_matchers/be_well_formed_task.rb +62 -0
- data/lib/cmdx/rspec/task_matchers/have_callback.rb +85 -0
- data/lib/cmdx/rspec/task_matchers/have_cmd_setting.rb +68 -0
- data/lib/cmdx/rspec/task_matchers/have_executed_callbacks.rb +92 -0
- data/lib/cmdx/rspec/task_matchers/have_middleware.rb +46 -0
- data/lib/cmdx/rspec/task_matchers/have_parameter.rb +181 -0
- data/lib/cmdx/task.rb +336 -427
- data/lib/cmdx/task_deprecator.rb +52 -0
- data/lib/cmdx/task_processor.rb +246 -0
- data/lib/cmdx/task_serializer.rb +34 -69
- data/lib/cmdx/utils/ansi_color.rb +13 -89
- data/lib/cmdx/utils/log_timestamp.rb +13 -42
- data/lib/cmdx/utils/monotonic_runtime.rb +11 -63
- data/lib/cmdx/utils/name_affix.rb +21 -71
- data/lib/cmdx/validator.rb +57 -0
- data/lib/cmdx/validator_registry.rb +108 -0
- data/lib/cmdx/validators/exclusion.rb +55 -94
- data/lib/cmdx/validators/format.rb +31 -85
- data/lib/cmdx/validators/inclusion.rb +65 -110
- data/lib/cmdx/validators/length.rb +117 -133
- data/lib/cmdx/validators/numeric.rb +123 -130
- data/lib/cmdx/validators/presence.rb +38 -79
- data/lib/cmdx/version.rb +1 -7
- data/lib/cmdx/workflow.rb +58 -330
- data/lib/cmdx.rb +1 -1
- data/lib/generators/cmdx/install_generator.rb +14 -31
- data/lib/generators/cmdx/task_generator.rb +39 -55
- data/lib/generators/cmdx/templates/install.rb +24 -6
- data/lib/generators/cmdx/workflow_generator.rb +41 -66
- data/lib/locales/ar.yml +0 -1
- data/lib/locales/cs.yml +0 -1
- data/lib/locales/da.yml +0 -1
- data/lib/locales/de.yml +0 -1
- data/lib/locales/el.yml +0 -1
- data/lib/locales/en.yml +0 -1
- data/lib/locales/es.yml +0 -1
- data/lib/locales/fi.yml +0 -1
- data/lib/locales/fr.yml +0 -1
- data/lib/locales/he.yml +0 -1
- data/lib/locales/hi.yml +0 -1
- data/lib/locales/it.yml +0 -1
- data/lib/locales/ja.yml +0 -1
- data/lib/locales/ko.yml +0 -1
- data/lib/locales/nl.yml +0 -1
- data/lib/locales/no.yml +0 -1
- data/lib/locales/pl.yml +0 -1
- data/lib/locales/pt.yml +0 -1
- data/lib/locales/ru.yml +0 -1
- data/lib/locales/sv.yml +0 -1
- data/lib/locales/th.yml +0 -1
- data/lib/locales/tr.yml +0 -1
- data/lib/locales/vi.yml +0 -1
- data/lib/locales/zh.yml +0 -1
- metadata +36 -8
- data/lib/cmdx/parameter_validator.rb +0 -81
- data/lib/cmdx/parameter_value.rb +0 -244
- data/lib/cmdx/parameters_inspector.rb +0 -72
- data/lib/cmdx/parameters_serializer.rb +0 -115
- data/lib/cmdx/rspec/result_matchers.rb +0 -917
- data/lib/cmdx/rspec/task_matchers.rb +0 -570
- data/lib/cmdx/validators/custom.rb +0 -102
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 2517b9b2e36f957800d10bf952bd8062fbcd4c66ff760574c741c96b5d76d925
|
4
|
+
data.tar.gz: f52d86024e590060604c17da1ff31ed520d9f5d561367d6ef59b6df93ed01b45
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b260acf4cf76fa11cb9af6fd498536c8260b813880fb46dca0569162eda32d08f67c9a3ccd06611a84fc75067b7b49c8365beebeafc766b6098961cf2fa46830
|
7
|
+
data.tar.gz: 7fe5dd38adfdee7db0b54f2748f19a74bbe34da632288275fd012a4ea15216ad8bc35a8e189e9274463797511d59f260063dab2903d9052968fbb69653bb93ef
|
@@ -0,0 +1,9 @@
|
|
1
|
+
Update the file in context using the following guidelines:
|
2
|
+
|
3
|
+
- Follow best practices and implementation
|
4
|
+
- Use a consistent professional voice
|
5
|
+
- Examples should be concise, non-repetitive, and realistic
|
6
|
+
- Update any pre-existing documentation to match stated rules
|
7
|
+
- Examples should not cross boundaries or focus
|
8
|
+
- Docs must cover both typical use cases, including invalid inputs and error conditions
|
9
|
+
- Use GitHub flavored markdown, including alerts to emphasize critical information (https://github.com/orgs/community/discussions/16925)
|
@@ -0,0 +1,21 @@
|
|
1
|
+
Add tests for the file in context using the following guidelines:
|
2
|
+
|
3
|
+
- Expectations should be concise, non-repetitive, and realistic (how it would be used in the real world)
|
4
|
+
- Follow best practices and implementation
|
5
|
+
- Update any pre-existing specs to match stated rules
|
6
|
+
- New tests should be consistent with current `spec/cmdx` specs
|
7
|
+
- Use custom matchers available within `lib/cmdx/rspec`
|
8
|
+
- Use task helpers available within `spec/support/helpers`
|
9
|
+
- 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)
|
10
|
+
- Ensure each test is independent; avoid shared state between tests
|
11
|
+
- Use let and let! to define test data, ensuring minimal and necessary setup
|
12
|
+
- Context block descriptions should start with the following words: `when`, `with`, `without`
|
13
|
+
- Organize tests logically using describe for classes/modules and context for different scenarios
|
14
|
+
- Use subject to define the object under test when appropriate to avoid repetition
|
15
|
+
- 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)
|
16
|
+
- Use clear and descriptive names for describe, context, and it blocks
|
17
|
+
- Prefer the expect syntax for assertions to improve readability
|
18
|
+
- Keep test code concise; avoid unnecessary complexity or duplication
|
19
|
+
- Tests must cover both typical cases and edge cases, including invalid inputs and error conditions
|
20
|
+
- Consider all possible scenarios for each method or behavior and ensure they are tested
|
21
|
+
- Verify all specs are passing
|
@@ -0,0 +1,13 @@
|
|
1
|
+
Add yardoc to the file in context using the following guidelines:
|
2
|
+
|
3
|
+
- Follow best practices and implementation
|
4
|
+
- New documentation should be consistent with current `lib/cmdx` documentation
|
5
|
+
- Examples should be concise, non-repetitive, and realistic
|
6
|
+
- Avoid unnecessary complexity or duplication
|
7
|
+
- Consider all possible scenarios for each method or behavior and ensure they are tested.
|
8
|
+
- Update any pre-existing documentation to match stated rules
|
9
|
+
- Do NOT include `CMDx` module level docs
|
10
|
+
- Module level docs description should NOT include `@example`
|
11
|
+
- Method level docs should include `@example`, `param`, `@options`, `@return`, and any `@raise`
|
12
|
+
- Hash `@params` should expand with possible `@option`
|
13
|
+
- Module and method level docs should NOT include `@since`
|
data/.rubocop.yml
CHANGED
data/CHANGELOG.md
CHANGED
@@ -7,12 +7,38 @@ and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0
|
|
7
7
|
|
8
8
|
## [TODO]
|
9
9
|
|
10
|
-
-
|
11
|
-
-
|
12
|
-
-
|
10
|
+
- Rebuild parameters to use a less magical approach
|
11
|
+
- Validators to add errors directly instead of raising errors
|
12
|
+
- Coercions to add errors directly instead of raising errors
|
13
|
+
- Update procs to call with object as first item
|
13
14
|
|
14
15
|
## [Unreleased]
|
15
16
|
|
17
|
+
## [1.1.1] - 2025-07-20
|
18
|
+
|
19
|
+
### Changed
|
20
|
+
- Updated all docs and specs
|
21
|
+
- Update deprecation key words
|
22
|
+
|
23
|
+
## [1.1.0] - 2025-07-17
|
24
|
+
|
25
|
+
### Added
|
26
|
+
- Added `CoercionRegistry` class for managing parameter coercions with support for custom type registration
|
27
|
+
- Added `ValidatorRegistry` class for managing parameter validators with support for custom validator registration
|
28
|
+
- Added `CallbackRegistry` class to take uninstantiated callback classes
|
29
|
+
- Added `Validator` and `Coercion` classes to build their respective handlers
|
30
|
+
- Added deprecation setting
|
31
|
+
|
32
|
+
### Changed
|
33
|
+
- Moved `Task::CALLBACKS` constant to `CallbackRegistry::TYPES`
|
34
|
+
- Updated `ParameterRegistry` class to not inherit from `Hash`
|
35
|
+
- Updated `MiddlewareRegistry` class to not inherit from `Hash`
|
36
|
+
- Updated `CallbackRegistry` class to not inherit from `Hash`
|
37
|
+
|
38
|
+
### Removed
|
39
|
+
- Removed task `register` class method
|
40
|
+
- Removed `Custom` validator since users can create and register a custom one
|
41
|
+
|
16
42
|
## [1.0.1] - 2025-07-07
|
17
43
|
|
18
44
|
### Added
|
data/README.md
CHANGED
@@ -31,7 +31,7 @@ Or install it yourself as:
|
|
31
31
|
```ruby
|
32
32
|
# Setup task
|
33
33
|
class SendWelcomeEmailTask < CMDx::Task
|
34
|
-
use CMDx::Middlewares::Timeout, seconds: 5
|
34
|
+
use :middleware, CMDx::Middlewares::Timeout, seconds: 5
|
35
35
|
|
36
36
|
on_success :track_email_delivery!
|
37
37
|
|
@@ -102,6 +102,7 @@ end
|
|
102
102
|
- [Logging](docs/logging.md)
|
103
103
|
- [Internationalization (i18n)](docs/internationalization.md)
|
104
104
|
- [Testing](docs/testing.md)
|
105
|
+
- [Deprecation](docs/deprecation.md)
|
105
106
|
- [AI Prompts](docs/ai_prompts.md)
|
106
107
|
- [Tips & Tricks](docs/tips_and_tricks.md)
|
107
108
|
|