ruby_slm 0.1.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.
@@ -0,0 +1,52 @@
1
+ require 'ruby_slm'
2
+
3
+ # From YAML file
4
+ # state_machine = StatesLanguageMachine.from_yaml_file('workflow.yaml')
5
+
6
+ # From YAML string
7
+ yaml_def = <<~YAML
8
+ StartAt: "ProcessOrder"
9
+ States:
10
+ ProcessOrder:
11
+ Type: "Task"
12
+ Resource: "arn:aws:lambda:us-east-1:123456789012:function:ProcessOrder"
13
+ Next: "CheckInventory"
14
+ CheckInventory:
15
+ Type: "Choice"
16
+ Choices:
17
+ - Variable: "$.in_stock"
18
+ BooleanEquals: true
19
+ Next: "ShipProduct"
20
+ Default: "Backorder"
21
+ ShipProduct:
22
+ Type: "Task"
23
+ Resource: "arn:aws:lambda:us-east-1:123456789012:function:ShipProduct"
24
+ End: true
25
+ Backorder:
26
+ Type: "Fail"
27
+ Cause: "Product out of stock"
28
+ Error: "OutOfStock"
29
+ YAML
30
+
31
+ state_machine = StatesLanguageMachine.from_yaml(yaml_def)
32
+
33
+ # Execute with custom context
34
+ context = {
35
+ logger: Logger.new($stdout),
36
+ task_executor: -> (resource, input) {
37
+ # Custom task execution logic
38
+ { "custom_result" => "executed", resource: resource, input: input }
39
+ }
40
+ }
41
+
42
+ execution = state_machine.start_execution(
43
+ { "order_id" => "123", "in_stock" => true },
44
+ "my-execution-123",
45
+ context
46
+ )
47
+
48
+ execution.run_all
49
+
50
+ puts execution.succeeded? # => true
51
+ puts execution.output # => Execution output
52
+ puts execution.to_json # => JSON representation of execution
metadata ADDED
@@ -0,0 +1,146 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: ruby_slm
3
+ version: !ruby/object:Gem::Version
4
+ version: 0.1.0
5
+ platform: ruby
6
+ authors:
7
+ - hussain-pithawala
8
+ bindir: exe
9
+ cert_chain: []
10
+ date: 1980-01-02 00:00:00.000000000 Z
11
+ dependencies:
12
+ - !ruby/object:Gem::Dependency
13
+ name: jsonpath
14
+ requirement: !ruby/object:Gem::Requirement
15
+ requirements:
16
+ - - "~>"
17
+ - !ruby/object:Gem::Version
18
+ version: '1.1'
19
+ - - ">="
20
+ - !ruby/object:Gem::Version
21
+ version: 1.1.5
22
+ type: :runtime
23
+ prerelease: false
24
+ version_requirements: !ruby/object:Gem::Requirement
25
+ requirements:
26
+ - - "~>"
27
+ - !ruby/object:Gem::Version
28
+ version: '1.1'
29
+ - - ">="
30
+ - !ruby/object:Gem::Version
31
+ version: 1.1.5
32
+ - !ruby/object:Gem::Dependency
33
+ name: securerandom
34
+ requirement: !ruby/object:Gem::Requirement
35
+ requirements:
36
+ - - "~>"
37
+ - !ruby/object:Gem::Version
38
+ version: 0.4.1
39
+ type: :runtime
40
+ prerelease: false
41
+ version_requirements: !ruby/object:Gem::Requirement
42
+ requirements:
43
+ - - "~>"
44
+ - !ruby/object:Gem::Version
45
+ version: 0.4.1
46
+ - !ruby/object:Gem::Dependency
47
+ name: rspec
48
+ requirement: !ruby/object:Gem::Requirement
49
+ requirements:
50
+ - - "~>"
51
+ - !ruby/object:Gem::Version
52
+ version: '3.0'
53
+ type: :development
54
+ prerelease: false
55
+ version_requirements: !ruby/object:Gem::Requirement
56
+ requirements:
57
+ - - "~>"
58
+ - !ruby/object:Gem::Version
59
+ version: '3.0'
60
+ - !ruby/object:Gem::Dependency
61
+ name: rake
62
+ requirement: !ruby/object:Gem::Requirement
63
+ requirements:
64
+ - - "~>"
65
+ - !ruby/object:Gem::Version
66
+ version: '13.0'
67
+ type: :development
68
+ prerelease: false
69
+ version_requirements: !ruby/object:Gem::Requirement
70
+ requirements:
71
+ - - "~>"
72
+ - !ruby/object:Gem::Version
73
+ version: '13.0'
74
+ - !ruby/object:Gem::Dependency
75
+ name: yard
76
+ requirement: !ruby/object:Gem::Requirement
77
+ requirements:
78
+ - - "~>"
79
+ - !ruby/object:Gem::Version
80
+ version: 0.9.0
81
+ type: :development
82
+ prerelease: false
83
+ version_requirements: !ruby/object:Gem::Requirement
84
+ requirements:
85
+ - - "~>"
86
+ - !ruby/object:Gem::Version
87
+ version: 0.9.0
88
+ description: Executes Amazon states language based state machine expressed in YAML
89
+ files
90
+ email:
91
+ - hussainpithawala@hotmail.com
92
+ executables: []
93
+ extensions: []
94
+ extra_rdoc_files: []
95
+ files:
96
+ - ".idea/.gitignore"
97
+ - CODE_OF_CONDUCT.md
98
+ - LICENSE
99
+ - LICENSE.txt
100
+ - README.md
101
+ - Rakefile
102
+ - examples/test_complex_workflow.rb
103
+ - examples/test_parallel_complex_workflow.rb
104
+ - lib/ruby_slm.rb
105
+ - lib/ruby_slm/errors.rb
106
+ - lib/ruby_slm/execution.rb
107
+ - lib/ruby_slm/state.rb
108
+ - lib/ruby_slm/state_machine.rb
109
+ - lib/ruby_slm/states/base.rb
110
+ - lib/ruby_slm/states/choice.rb
111
+ - lib/ruby_slm/states/fail.rb
112
+ - lib/ruby_slm/states/parallel.rb
113
+ - lib/ruby_slm/states/pass.rb
114
+ - lib/ruby_slm/states/succeed.rb
115
+ - lib/ruby_slm/states/task.rb
116
+ - lib/ruby_slm/states/wait.rb
117
+ - lib/ruby_slm/version.rb
118
+ - sig/states_language_machine.rbs
119
+ - test/test_state_machine.rb
120
+ homepage: https://github.com/hussainpithawala/ruby_slm
121
+ licenses:
122
+ - MIT
123
+ metadata:
124
+ allowed_push_host: https://rubygems.org
125
+ homepage_uri: https://github.com/hussainpithawala/ruby_slm
126
+ source_code_uri: https://github.com/hussainpithawala/ruby_slm
127
+ changelog_uri: https://github.com/your-username/ruby_slm/releases
128
+ documentation_uri: https://rubydoc.info/gems/ruby_slm
129
+ rdoc_options: []
130
+ require_paths:
131
+ - lib
132
+ required_ruby_version: !ruby/object:Gem::Requirement
133
+ requirements:
134
+ - - ">="
135
+ - !ruby/object:Gem::Version
136
+ version: 3.4.7
137
+ required_rubygems_version: !ruby/object:Gem::Requirement
138
+ requirements:
139
+ - - ">="
140
+ - !ruby/object:Gem::Version
141
+ version: '0'
142
+ requirements: []
143
+ rubygems_version: 3.6.9
144
+ specification_version: 4
145
+ summary: Amazon states language based state machine
146
+ test_files: []