module Terjira::OptionSupportable
For support CLI
options.
Constants
- OPTION_TO_SELECTOR
Public Class Methods
included(klass)
click to toggle source
# File lib/terjira/option_supportable.rb, line 8 def self.included(klass) klass.class_eval do extend SharedOptions include OptionSelector end end
Public Instance Methods
resource_store()
click to toggle source
# File lib/terjira/option_supportable.rb, line 102 def resource_store ResourceStore.instance end
suggest_options(opts = {})
click to toggle source
Transforming and cleaning options and suggest list of option values
# File lib/terjira/option_supportable.rb, line 33 def suggest_options(opts = {}) origin = options.dup self.with_editor = origin.delete(:editor) if opts[:required].is_a? Array opts[:required].inject(origin) do |memo, opt| memo[opt] ||= opt.to_s memo end end # Store assigned options origin.reject { |k, v| k.to_s.casecmp(v.to_s).zero? }.each do |k, v| resource_store.set(k.to_sym, v) end # Store given options from arguments (opts[:resources] || {}).each do |k, v| resource_store.set(k.to_sym, v) end # Select options that are not assigned value from user default_value_options = origin.select do |k, v| k.to_s.casecmp(v.to_s).zero? end # Sort order for suggest option values default_value_options = default_value_options.sort do |hash| OPTION_TO_SELECTOR.keys.index(hash[0].to_sym) || 999 end default_value_options = Hash[default_value_options] # Suggest option values and save to resource store default_value_options.each_key do |k, _v| selector_method = OPTION_TO_SELECTOR[k.to_sym] send(selector_method) if selector_method end # Fetch selected values from resource store default_value_options.each_key do |k, _v| default_value_options[k] = resource_store.get(k) end origin.merge! default_value_options end