Module: Boson::OptionCommand::Render

Included in:
Boson::OptionCommand
Defined in:
lib/boson/science.rb

Instance Method Summary collapse

Instance Method Details

#all_global_optionsObject



82
83
84
85
86
87
88
# File 'lib/boson/science.rb', line 82

def all_global_options
  OptionParser.make_mergeable! @command.render_options
  render_opts = Util.recursive_hash_merge(@command.render_options, Util.deep_copy(self.class.default_render_options))
  merged_opts = Util.recursive_hash_merge Util.deep_copy(self.class.default_pipe_options), render_opts
  opts = Util.recursive_hash_merge merged_opts, Util.deep_copy(BASIC_OPTIONS)
  set_global_option_defaults opts
end

#option_parserObject



77
78
79
80
# File 'lib/boson/science.rb', line 77

def option_parser
  @option_parser ||= @command.render_options ? OptionParser.new(all_global_options) :
    self.class.default_option_parser
end

#set_global_option_defaults(opts) ⇒ Object



90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
# File 'lib/boson/science.rb', line 90

def set_global_option_defaults(opts)
  if !opts[:fields].key?(:values)
    if opts[:fields][:default]
      opts[:fields][:values] = opts[:fields][:default]
    else
      if opts[:change_fields] && (changed = opts[:change_fields][:default])
        opts[:fields][:values] = changed.is_a?(Array) ? changed : changed.values
      end
      opts[:fields][:values] ||= opts[:headers][:default].keys if opts[:headers] && opts[:headers][:default]
    end
    opts[:fields][:enum] = false if opts[:fields][:values] && !opts[:fields].key?(:enum)
  end
  if opts[:fields][:values]
    opts[:sort][:values] ||= opts[:fields][:values]
    opts[:query][:keys] ||= opts[:fields][:values]
    opts[:query][:default_keys] ||= "*"
  end
  opts
end