lex-transformer 0.1.4 → 0.3.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 (34) hide show
  1. checksums.yaml +4 -4
  2. data/.github/workflows/ci.yml +16 -0
  3. data/.gitignore +3 -0
  4. data/.rubocop.yml +37 -21
  5. data/CHANGELOG.md +54 -0
  6. data/CLAUDE.md +135 -0
  7. data/Dockerfile +1 -1
  8. data/Gemfile +13 -0
  9. data/README.md +121 -19
  10. data/Rakefile +2 -0
  11. data/docker_deploy.rb +1 -0
  12. data/lex-transformer.gemspec +13 -17
  13. data/lib/legion/extensions/transformer/actors/transform.rb +20 -14
  14. data/lib/legion/extensions/transformer/client.rb +104 -0
  15. data/lib/legion/extensions/transformer/definitions.rb +56 -0
  16. data/lib/legion/extensions/transformer/engines/base.rb +19 -0
  17. data/lib/legion/extensions/transformer/engines/erb.rb +37 -0
  18. data/lib/legion/extensions/transformer/engines/jsonpath.rb +41 -0
  19. data/lib/legion/extensions/transformer/engines/liquid.rb +31 -0
  20. data/lib/legion/extensions/transformer/engines/llm.rb +153 -0
  21. data/lib/legion/extensions/transformer/engines/registry.rb +51 -0
  22. data/lib/legion/extensions/transformer/engines/static.rb +21 -0
  23. data/lib/legion/extensions/transformer/helpers/schema_validator.rb +48 -0
  24. data/lib/legion/extensions/transformer/runners/transform.rb +79 -52
  25. data/lib/legion/extensions/transformer/transport/exchanges/task.rb +10 -4
  26. data/lib/legion/extensions/transformer/transport/messages/message.rb +27 -17
  27. data/lib/legion/extensions/transformer/transport/queues/transform.rb +12 -6
  28. data/lib/legion/extensions/transformer/transport.rb +19 -13
  29. data/lib/legion/extensions/transformer/version.rb +3 -1
  30. data/lib/legion/extensions/transformer.rb +3 -0
  31. metadata +29 -76
  32. data/CODE_OF_CONDUCT.md +0 -74
  33. data/Gemfile.lock +0 -58
  34. data/bitbucket-pipelines.yml +0 -19
@@ -1,66 +1,93 @@
1
- require 'tilt'
1
+ # frozen_string_literal: true
2
2
 
3
- module Legion::Extensions::Transformer
4
- module Runners
5
- module Transform
6
- def transform(transformation:, **payload)
7
- if transformation.include?('<%') || transformation.include?('%>')
8
- template = Tilt['erb'].new { transformation }
9
- variables = { **payload }
10
- variables[:crypt] = Legion::Crypt if transformation.include? 'crypt'
11
- variables[:settings] = Legion::Settings if transformation.include? 'settings'
12
- variables[:cache] = Legion::Cache if transformation.include? 'cache'
13
- if payload.key?(:task_id) && transformation.include?('task')
14
- variables[:task] = Legion::Data::Model::Task[payload[:task_id]]
3
+ require_relative '../engines/registry'
4
+ require_relative '../helpers/schema_validator'
5
+
6
+ module Legion
7
+ module Extensions
8
+ module Transformer
9
+ module Runners
10
+ module Transform
11
+ def transform(transformation:, engine: nil, schema: nil, engine_options: {}, **payload)
12
+ payload[:args] = render_transformation(transformation, payload, engine: engine, engine_options: engine_options)
13
+
14
+ return payload[:args] if payload[:args].is_a?(Hash) && payload[:args][:success] == false
15
+
16
+ if schema
17
+ validation = Helpers::SchemaValidator.validate(schema: schema, data: payload[:args])
18
+ return { success: false, status: 'transformer.validation_failed', errors: validation[:errors] } unless validation[:valid]
19
+ end
20
+ dispatch_transformed(payload)
21
+ generate_task_log(task_id: payload[:task_id], function: 'transform', values: payload) if payload[:debug] && payload.key?(:task_id)
22
+ { success: true, **payload }
15
23
  end
16
24
 
17
- payload[:args] = from_json(template.render(self, variables))
18
- else
19
- payload[:args] = from_json(transformation)
20
- end
25
+ def transform_chain(steps:, **payload)
26
+ result = payload
27
+ steps.each do |step|
28
+ step_opts = step[:engine_options] || {}
29
+ rendered = render_transformation(step[:transformation], result, engine: step[:engine], engine_options: step_opts)
30
+ rendered = from_json(rendered) if rendered.is_a?(String)
31
+
32
+ return rendered if rendered.is_a?(Hash) && rendered[:success] == false
33
+
34
+ if step[:schema]
35
+ validation = Helpers::SchemaValidator.validate(schema: step[:schema], data: rendered)
36
+ return { success: false, status: 'transformer.validation_failed', errors: validation[:errors] } unless validation[:valid]
37
+ end
38
+ result = result.merge({ args: rendered }.merge(rendered))
39
+ end
40
+ { success: true, **result }
41
+ end
42
+
43
+ def render_transformation(transformation, payload, engine: nil, engine_options: {})
44
+ eng = if engine
45
+ Engines::Registry.fetch(engine)
46
+ else
47
+ Engines::Registry.detect(transformation)
48
+ end
49
+
50
+ rendered = eng.render(transformation, payload, **engine_options)
51
+ return rendered if rendered.is_a?(Hash) && rendered[:success] == false
21
52
 
22
- case payload[:args]
23
- when Hash
24
- unless payload[:task_id].nil?
25
- task_update(payload[:task_id], 'transformer.succeeded', function_args: payload[:args])
53
+ rendered.is_a?(String) ? from_json(rendered) : rendered
26
54
  end
27
- send_task(**payload)
28
- task_update(payload[:task_id], 'task.queued', use_database: false) unless payload[:task_id].nil?
29
- when Array
30
- payload[:args].each do |thing|
31
- new_payload = payload
32
- task = Legion::Runner::Status.generate_task_id(function_args: thing,
33
- status: 'task.queued',
34
- args: thing,
35
- **new_payload)
36
- new_payload[:task_id] = task[:task_id]
37
- new_payload[:args] = thing
38
- send_task(**new_payload)
55
+
56
+ def dispatch_transformed(payload)
57
+ case payload[:args]
58
+ when Hash
59
+ task_update(payload[:task_id], 'transformer.succeeded', function_args: payload[:args]) unless payload[:task_id].nil?
60
+ send_task(**payload)
61
+ task_update(payload[:task_id], 'task.queued', use_database: false) unless payload[:task_id].nil?
62
+ when Array
63
+ dispatch_multiplied(payload)
64
+ end
39
65
  end
40
- unless payload[:task_id].nil?
41
- task_update(payload[:task_id],
42
- 'task.multiplied',
43
- function_args: payload[:args])
66
+
67
+ def dispatch_multiplied(payload)
68
+ payload[:args].each do |thing|
69
+ new_payload = payload.dup
70
+ task = Legion::Runner::Status.generate_task_id(function_args: thing, status: 'task.queued', args: thing, **new_payload)
71
+ new_payload[:task_id] = task[:task_id]
72
+ new_payload[:args] = thing
73
+ send_task(**new_payload)
74
+ end
75
+ task_update(payload[:task_id], 'task.multiplied', function_args: payload[:args]) unless payload[:task_id].nil?
44
76
  end
45
- end
46
77
 
47
- if payload[:debug] && payload.key?(:task_id)
48
- generate_task_log(task_id: payload[:task_id], function: 'transform', values: payload)
49
- end
50
- { success: true, **payload }
51
- end
78
+ def send_task(**opts)
79
+ payload = {}
80
+ %i[task_id relationship_id trigger_function_id runner_class function_id function chain_id debug args].each do |thing|
81
+ payload[thing] = opts[thing] if opts.key? thing
82
+ end
52
83
 
53
- def send_task(**opts)
54
- payload = {}
55
- %i[task_id relationship_id trigger_function_id runner_class function_id function chain_id debug args].each do |thing| # rubocop:disable Layout/LineLength
56
- payload[thing] = opts[thing] if opts.key? thing
57
- end
84
+ Legion::Extensions::Transformer::Transport::Messages::Message.new(**payload).publish
85
+ end
58
86
 
59
- Legion::Extensions::Transformer::Transport::Messages::Message.new(**payload).publish
87
+ include Legion::Extensions::Helpers::Lex
88
+ extend Legion::Extensions::Helpers::Task
89
+ end
60
90
  end
61
-
62
- include Legion::Extensions::Helpers::Lex
63
- extend Legion::Extensions::Helpers::Task
64
91
  end
65
92
  end
66
93
  end
@@ -1,7 +1,13 @@
1
- module Legion::Extensions::Transformer
2
- module Transport
3
- module Exchanges
4
- class Transformer < Legion::Transport::Exchanges::Task
1
+ # frozen_string_literal: true
2
+
3
+ module Legion
4
+ module Extensions
5
+ module Transformer
6
+ module Transport
7
+ module Exchanges
8
+ class Transformer < Legion::Transport::Exchanges::Task
9
+ end
10
+ end
5
11
  end
6
12
  end
7
13
  end
@@ -1,24 +1,34 @@
1
- module Legion::Extensions::Transformer::Transport::Messages
2
- class Message < Legion::Transport::Message
3
- def type
4
- 'task'
5
- end
1
+ # frozen_string_literal: true
6
2
 
7
- def message
8
- @options[:function] = function.values[:name]
9
- @options
10
- end
3
+ module Legion
4
+ module Extensions
5
+ module Transformer
6
+ module Transport
7
+ module Messages
8
+ class Message < Legion::Transport::Message
9
+ def type
10
+ 'task'
11
+ end
11
12
 
12
- def routing_key
13
- "#{function.runner.extension.values[:name]}.#{function.runner.values[:name]}.#{function.values[:name]}"
14
- end
13
+ def message
14
+ @options[:function] = function.values[:name]
15
+ @options
16
+ end
15
17
 
16
- def exchange
17
- Legion::Transport::Exchange.new(function.runner.extension.values[:exchange])
18
- end
18
+ def routing_key
19
+ "#{function.runner.extension.values[:name]}.#{function.runner.values[:name]}.#{function.values[:name]}"
20
+ end
21
+
22
+ def exchange
23
+ Legion::Transport::Exchange.new(function.runner.extension.values[:exchange])
24
+ end
19
25
 
20
- def function
21
- @function ||= Legion::Data::Model::Function[@options[:function_id]]
26
+ def function
27
+ @function ||= Legion::Data::Model::Function[@options[:function_id]]
28
+ end
29
+ end
30
+ end
31
+ end
22
32
  end
23
33
  end
24
34
  end
@@ -1,9 +1,15 @@
1
- module Legion::Extensions::Transformer
2
- module Transport
3
- module Queues
4
- class Transform < Legion::Transport::Queue
5
- def queue_name
6
- 'task.transform'
1
+ # frozen_string_literal: true
2
+
3
+ module Legion
4
+ module Extensions
5
+ module Transformer
6
+ module Transport
7
+ module Queues
8
+ class Transform < Legion::Transport::Queue
9
+ def queue_name
10
+ 'task.transform'
11
+ end
12
+ end
7
13
  end
8
14
  end
9
15
  end
@@ -1,17 +1,23 @@
1
- module Legion::Extensions::Transformer
2
- module Transport
3
- extend Legion::Extensions::Transport
1
+ # frozen_string_literal: true
4
2
 
5
- def self.additional_e_to_q
6
- [
7
- {
8
- to: Legion::Extensions::Transformer::Transport::Queues::Transform,
9
- routing_key: 'task.conditioner.succeeded'
10
- }, {
11
- to: Legion::Extensions::Transformer::Transport::Queues::Transform,
12
- routing_key: 'task.subtask.transform'
13
- }
14
- ]
3
+ module Legion
4
+ module Extensions
5
+ module Transformer
6
+ module Transport
7
+ extend Legion::Extensions::Transport
8
+
9
+ def self.additional_e_to_q
10
+ [
11
+ {
12
+ to: Legion::Extensions::Transformer::Transport::Queues::Transform,
13
+ routing_key: 'task.conditioner.succeeded'
14
+ }, {
15
+ to: Legion::Extensions::Transformer::Transport::Queues::Transform,
16
+ routing_key: 'task.subtask.transform'
17
+ }
18
+ ]
19
+ end
20
+ end
15
21
  end
16
22
  end
17
23
  end
@@ -1,7 +1,9 @@
1
+ # frozen_string_literal: true
2
+
1
3
  module Legion
2
4
  module Extensions
3
5
  module Transformer
4
- VERSION = '0.1.4'.freeze
6
+ VERSION = '0.3.0'
5
7
  end
6
8
  end
7
9
  end
@@ -1,4 +1,7 @@
1
+ # frozen_string_literal: true
2
+
1
3
  require 'legion/extensions/transformer/version'
4
+ require_relative 'transformer/client'
2
5
 
3
6
  module Legion
4
7
  module Extensions
metadata CHANGED
@@ -1,14 +1,13 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: lex-transformer
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.1.4
4
+ version: 0.3.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Esity
8
- autorequire:
9
8
  bindir: bin
10
9
  cert_chain: []
11
- date: 2021-03-03 00:00:00.000000000 Z
10
+ date: 1980-01-02 00:00:00.000000000 Z
12
11
  dependencies:
13
12
  - !ruby/object:Gem::Dependency
14
13
  name: tilt
@@ -16,108 +15,63 @@ dependencies:
16
15
  requirements:
17
16
  - - ">="
18
17
  - !ruby/object:Gem::Version
19
- version: '0'
18
+ version: '2.3'
20
19
  type: :runtime
21
20
  prerelease: false
22
21
  version_requirements: !ruby/object:Gem::Requirement
23
22
  requirements:
24
23
  - - ">="
25
24
  - !ruby/object:Gem::Version
26
- version: '0'
27
- - !ruby/object:Gem::Dependency
28
- name: bundler
29
- requirement: !ruby/object:Gem::Requirement
30
- requirements:
31
- - - ">="
32
- - !ruby/object:Gem::Version
33
- version: '2'
34
- type: :development
35
- prerelease: false
36
- version_requirements: !ruby/object:Gem::Requirement
37
- requirements:
38
- - - ">="
39
- - !ruby/object:Gem::Version
40
- version: '2'
41
- - !ruby/object:Gem::Dependency
42
- name: rake
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - ">="
46
- - !ruby/object:Gem::Version
47
- version: '0'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - ">="
53
- - !ruby/object:Gem::Version
54
- version: '0'
55
- - !ruby/object:Gem::Dependency
56
- name: rspec
57
- requirement: !ruby/object:Gem::Requirement
58
- requirements:
59
- - - ">="
60
- - !ruby/object:Gem::Version
61
- version: '0'
62
- type: :development
63
- prerelease: false
64
- version_requirements: !ruby/object:Gem::Requirement
65
- requirements:
66
- - - ">="
67
- - !ruby/object:Gem::Version
68
- version: '0'
69
- - !ruby/object:Gem::Dependency
70
- name: rubocop
71
- requirement: !ruby/object:Gem::Requirement
72
- requirements:
73
- - - ">="
74
- - !ruby/object:Gem::Version
75
- version: '0'
76
- type: :development
77
- prerelease: false
78
- version_requirements: !ruby/object:Gem::Requirement
79
- requirements:
80
- - - ">="
81
- - !ruby/object:Gem::Version
82
- version: '0'
83
- description: Runs transformer statements against tasks in a relationship
25
+ version: '2.3'
26
+ description: Template-based payload transformation between tasks with multiple engines,
27
+ schema validation, and composition
84
28
  email:
85
29
  - matthewdiverson@gmail.com
86
30
  executables: []
87
31
  extensions: []
88
32
  extra_rdoc_files: []
89
33
  files:
34
+ - ".github/workflows/ci.yml"
90
35
  - ".gitignore"
91
36
  - ".rspec"
92
37
  - ".rubocop.yml"
93
- - CODE_OF_CONDUCT.md
38
+ - CHANGELOG.md
39
+ - CLAUDE.md
94
40
  - Dockerfile
95
41
  - Gemfile
96
- - Gemfile.lock
97
42
  - LICENSE.txt
98
43
  - README.md
99
44
  - Rakefile
100
- - bitbucket-pipelines.yml
101
45
  - docker_deploy.rb
102
46
  - lex-transformer.gemspec
103
47
  - lib/legion/extensions/transformer.rb
104
48
  - lib/legion/extensions/transformer/actors/transform.rb
49
+ - lib/legion/extensions/transformer/client.rb
50
+ - lib/legion/extensions/transformer/definitions.rb
51
+ - lib/legion/extensions/transformer/engines/base.rb
52
+ - lib/legion/extensions/transformer/engines/erb.rb
53
+ - lib/legion/extensions/transformer/engines/jsonpath.rb
54
+ - lib/legion/extensions/transformer/engines/liquid.rb
55
+ - lib/legion/extensions/transformer/engines/llm.rb
56
+ - lib/legion/extensions/transformer/engines/registry.rb
57
+ - lib/legion/extensions/transformer/engines/static.rb
58
+ - lib/legion/extensions/transformer/helpers/schema_validator.rb
105
59
  - lib/legion/extensions/transformer/runners/transform.rb
106
60
  - lib/legion/extensions/transformer/transport.rb
107
61
  - lib/legion/extensions/transformer/transport/exchanges/task.rb
108
62
  - lib/legion/extensions/transformer/transport/messages/message.rb
109
63
  - lib/legion/extensions/transformer/transport/queues/transform.rb
110
64
  - lib/legion/extensions/transformer/version.rb
111
- homepage: https://bitbucket.org/legion-io/lex-transformer
65
+ homepage: https://github.com/LegionIO/lex-transformer
112
66
  licenses:
113
67
  - MIT
114
68
  metadata:
115
- homepage_uri: https://bitbucket.org/legion-io/lex-transformer
116
- source_code_uri: https://bitbucket.org/legion-io/lex-transformer
117
- documentation_uri: https://legionio.atlassian.net/wiki/spaces/LEX/pages/612270222
118
- changelog_uri: https://legionio.atlassian.net/wiki/spaces/LEX/pages/614858842
119
- bug_tracker_uri: https://bitbucket.org/legion-io/lex-transformer/issues
120
- post_install_message:
69
+ homepage_uri: https://github.com/LegionIO/lex-transformer
70
+ source_code_uri: https://github.com/LegionIO/lex-transformer
71
+ documentation_uri: https://github.com/LegionIO/lex-transformer
72
+ changelog_uri: https://github.com/LegionIO/lex-transformer/blob/main/CHANGELOG.md
73
+ bug_tracker_uri: https://github.com/LegionIO/lex-transformer/issues
74
+ rubygems_mfa_required: 'true'
121
75
  rdoc_options: []
122
76
  require_paths:
123
77
  - lib
@@ -125,15 +79,14 @@ required_ruby_version: !ruby/object:Gem::Requirement
125
79
  requirements:
126
80
  - - ">="
127
81
  - !ruby/object:Gem::Version
128
- version: 2.5.0
82
+ version: '3.4'
129
83
  required_rubygems_version: !ruby/object:Gem::Requirement
130
84
  requirements:
131
85
  - - ">="
132
86
  - !ruby/object:Gem::Version
133
87
  version: '0'
134
88
  requirements: []
135
- rubygems_version: 3.1.4
136
- signing_key:
89
+ rubygems_version: 3.6.9
137
90
  specification_version: 4
138
- summary: LEX-Transformer is used to transform payloads for the output
91
+ summary: Payload transformation engine for LegionIO task chains
139
92
  test_files: []
data/CODE_OF_CONDUCT.md DELETED
@@ -1,74 +0,0 @@
1
- # Contributor Covenant Code of Conduct
2
-
3
- ## Our Pledge
4
-
5
- In the interest of fostering an open and welcoming environment, we as
6
- contributors and maintainers pledge to making participation in our project and
7
- our community a harassment-free experience for everyone, regardless of age, body
8
- size, disability, ethnicity, gender identity and expression, level of experience,
9
- nationality, personal appearance, race, religion, or sexual identity and
10
- orientation.
11
-
12
- ## Our Standards
13
-
14
- Examples of behavior that contributes to creating a positive environment
15
- include:
16
-
17
- * Using welcoming and inclusive language
18
- * Being respectful of differing viewpoints and experiences
19
- * Gracefully accepting constructive criticism
20
- * Focusing on what is best for the community
21
- * Showing empathy towards other community members
22
-
23
- Examples of unacceptable behavior by participants include:
24
-
25
- * The use of sexualized language or imagery and unwelcome sexual attention or
26
- advances
27
- * Trolling, insulting/derogatory comments, and personal or political attacks
28
- * Public or private harassment
29
- * Publishing others' private information, such as a physical or electronic
30
- address, without explicit permission
31
- * Other conduct which could reasonably be considered inappropriate in a
32
- professional setting
33
-
34
- ## Our Responsibilities
35
-
36
- Project maintainers are responsible for clarifying the standards of acceptable
37
- behavior and are expected to take appropriate and fair corrective action in
38
- response to any instances of unacceptable behavior.
39
-
40
- Project maintainers have the right and responsibility to remove, edit, or
41
- reject comments, commits, code, wiki edits, issues, and other contributions
42
- that are not aligned to this Code of Conduct, or to ban temporarily or
43
- permanently any contributor for other behaviors that they deem inappropriate,
44
- threatening, offensive, or harmful.
45
-
46
- ## Scope
47
-
48
- This Code of Conduct applies both within project spaces and in public spaces
49
- when an individual is representing the project or its community. Examples of
50
- representing a project or community include using an official project e-mail
51
- address, posting via an official social media account, or acting as an appointed
52
- representative at an online or offline event. Representation of a project may be
53
- further defined and clarified by project maintainers.
54
-
55
- ## Enforcement
56
-
57
- Instances of abusive, harassing, or otherwise unacceptable behavior may be
58
- reported by contacting the project team at matthewdiverson@gmail.com. All
59
- complaints will be reviewed and investigated and will result in a response that
60
- is deemed necessary and appropriate to the circumstances. The project team is
61
- obligated to maintain confidentiality with regard to the reporter of an incident.
62
- Further details of specific enforcement policies may be posted separately.
63
-
64
- Project maintainers who do not follow or enforce the Code of Conduct in good
65
- faith may face temporary or permanent repercussions as determined by other
66
- members of the project's leadership.
67
-
68
- ## Attribution
69
-
70
- This Code of Conduct is adapted from the [Contributor Covenant][homepage], version 1.4,
71
- available at [http://contributor-covenant.org/version/1/4][version]
72
-
73
- [homepage]: http://contributor-covenant.org
74
- [version]: http://contributor-covenant.org/version/1/4/
data/Gemfile.lock DELETED
@@ -1,58 +0,0 @@
1
- PATH
2
- remote: .
3
- specs:
4
- lex-transformer (0.1.4)
5
- tilt
6
-
7
- GEM
8
- remote: https://rubygems.org/
9
- specs:
10
- ast (2.4.2)
11
- diff-lcs (1.4.4)
12
- parallel (1.20.1)
13
- parser (3.0.0.0)
14
- ast (~> 2.4.1)
15
- rainbow (3.0.0)
16
- rake (13.0.3)
17
- regexp_parser (2.1.1)
18
- rexml (3.2.4)
19
- rspec (3.10.0)
20
- rspec-core (~> 3.10.0)
21
- rspec-expectations (~> 3.10.0)
22
- rspec-mocks (~> 3.10.0)
23
- rspec-core (3.10.1)
24
- rspec-support (~> 3.10.0)
25
- rspec-expectations (3.10.1)
26
- diff-lcs (>= 1.2.0, < 2.0)
27
- rspec-support (~> 3.10.0)
28
- rspec-mocks (3.10.2)
29
- diff-lcs (>= 1.2.0, < 2.0)
30
- rspec-support (~> 3.10.0)
31
- rspec-support (3.10.2)
32
- rubocop (1.11.0)
33
- parallel (~> 1.10)
34
- parser (>= 3.0.0.0)
35
- rainbow (>= 2.2.2, < 4.0)
36
- regexp_parser (>= 1.8, < 3.0)
37
- rexml
38
- rubocop-ast (>= 1.2.0, < 2.0)
39
- ruby-progressbar (~> 1.7)
40
- unicode-display_width (>= 1.4.0, < 3.0)
41
- rubocop-ast (1.4.1)
42
- parser (>= 2.7.1.5)
43
- ruby-progressbar (1.11.0)
44
- tilt (2.0.10)
45
- unicode-display_width (2.0.0)
46
-
47
- PLATFORMS
48
- ruby
49
-
50
- DEPENDENCIES
51
- bundler (>= 2)
52
- lex-transformer!
53
- rake
54
- rspec
55
- rubocop
56
-
57
- BUNDLED WITH
58
- 2.1.4
@@ -1,19 +0,0 @@
1
- image: ruby:2.7
2
-
3
- pipelines:
4
- tags:
5
- "v*":
6
- - step:
7
- name: Push to RubyGems
8
- deployment: RubyGems
9
- script:
10
- - gem install gem-release
11
- - (umask 077 ; echo $gem_creds | base64 --decode > ~/.gem/credentials)
12
- - gem release
13
- artifacts:
14
- - pkg/**
15
- - step:
16
- name: Push to Docker
17
- deployment: Docker
18
- script:
19
- - './docker_deploy.rb'