Class: Textus::Action::Propose
- Defined in:
- lib/textus/action/propose.rb
Class Method Summary collapse
Methods inherited from Base
Methods included from Contract::DSL
#arg, #cli, #cli_stdin, #contract, #contract?, #summary, #surfaces, #verb, #view
Class Method Details
.call(container:, call:, key:, meta: nil, body: nil, content: nil) ⇒ Object
20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 |
# File 'lib/textus/action/propose.rb', line 20 def self.call(container:, call:, key:, meta: nil, body: nil, content: nil) zone = container.manifest.policy.propose_lane_for(call.role) unless zone return Failure(code: :propose_forbidden, message: "role '#{call.role}' has no writable propose_lane", details: { "role" => call.role }) end mentry = container.manifest.resolver.resolve("#{zone}.#{key}").entry Success(container.compositor.write( "#{zone}.#{key}", mentry: mentry, payload: Textus::Store::Envelope::Writer::Payload.new( meta: || {}, body: body, content: content, ), call: call, )) end |