class Webcommand::Command
Constants
- DEFAULT_PARAM_SCHEMA_REGEX
- InvalidParams
- PARAMS_DEFAULT_SCHEMA
- WrongParamsSize
Public Class Methods
new(template_command, params_schema: nil, executor: TTY::Command)
click to toggle source
# File lib/webcommand/command.rb, line 11 def initialize(template_command, params_schema: nil, executor: TTY::Command) @template_command = template_command @params_schema = params_schema || PARAMS_DEFAULT_SCHEMA @executor = executor end
Public Instance Methods
call(**params)
click to toggle source
# File lib/webcommand/command.rb, line 17 def call(**params) raise WrongParamsSize, params if wrong_params_size?(params) raise InvalidParams, params unless valid_params?(params) template_render = make_template_renderer(params) command = template_render.render(@template_command) #TODO: Extract executor to a new class returning a customized execution result @executor.new.run!(command) end
Private Instance Methods
make_template_renderer(params)
click to toggle source
# File lib/webcommand/command.rb, line 46 def make_template_renderer(params) Mustache.new.tap do |template| params.each do |key, value| template[key] = value end end end
template_command_keys()
click to toggle source
# File lib/webcommand/command.rb, line 42 def template_command_keys @template_command.scan(/{{(.*?)}}/).flatten.map(&:to_sym) end
valid_params?(params)
click to toggle source
# File lib/webcommand/command.rb, line 33 def valid_params?(params) return false unless params.keys == template_command_keys return true if @params_schema == PARAMS_DEFAULT_SCHEMA params.keys.reduce(true) do |result, key| result && @params_schema[key].match?(params[key]) end end
wrong_params_size?(params)
click to toggle source
# File lib/webcommand/command.rb, line 29 def wrong_params_size?(params) @params_schema.keys.size != 0 && params.keys.size != @params_schema.keys.size end