Class: Sfn::Config

Inherits:
Bogo::Config
  • Object
show all
Defined in:
lib/sfn/config.rb,
lib/sfn/config/list.rb,
lib/sfn/config/print.rb,
lib/sfn/config/create.rb,
lib/sfn/config/events.rb,
lib/sfn/config/export.rb,
lib/sfn/config/import.rb,
lib/sfn/config/update.rb,
lib/sfn/config/destroy.rb,
lib/sfn/config/inspect.rb,
lib/sfn/config/promote.rb,
lib/sfn/config/describe.rb,
lib/sfn/config/validate.rb

Overview

Top level configuration

Direct Known Subclasses

Describe, Destroy, Events, Export, Import, Inspect, List, Promote, Validate

Defined Under Namespace

Classes: Create, Describe, Destroy, Events, Export, Import, Inspect, List, Print, Promote, Update, Validate

Constant Summary collapse

BOOLEAN_VALUES =

Only values allowed designating bool type

[TrueClass, FalseClass]

Class Method Summary collapse

Class Method Details

._options_for(klass, shorts) ⇒ Smash

Provide options for config class



95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
# File 'lib/sfn/config.rb', line 95

def self._options_for(klass, shorts)
  Smash[
    ([klass] + klass.ancestors).map do |a|
      if(a.ancestors.include?(Bogo::Config) && !a.attributes.empty?)
        a.attributes
      end
    end.compact.reverse.inject(Smash.new){|m, n| m.deep_merge(n)}.map do |name, info|
      next unless info[:description]
      short = name.chars.zip(name.chars.map(&:upcase)).flatten.detect do |c|
        !shorts.include?(c)
      end
      shorts << short
      info[:short] = short
      info[:long] = name.tr('_', '-')
      info[:boolean] = [info[:type]].compact.flatten.all?{|t| BOOLEAN_VALUES.include?(t)}
      [name, info]
    end.compact
  ]
end

.options_for(klass) ⇒ Smash

Provide all options for config class (includes global configs)



85
86
87
88
# File 'lib/sfn/config.rb', line 85

def self.options_for(klass)
  shorts = ['h'] # always reserve `-h` for help
  _options_for(klass, shorts)
end