Class: CLIUtils::Prefs
- Inherits:
-
Object
- Object
- CLIUtils::Prefs
- Includes:
- Messaging
- Defined in:
- lib/cliutils/prefs.rb
Overview
Engine to derive preferences from a YAML file, deliver those to a user via a prompt, and collect the results.
Class Attribute Summary collapse
-
.registered_actions ⇒ Hash
Stores any actions registered for all instances of Prefs.
-
.registered_behaviors ⇒ Hash
Stores any behaviors registered for all instances of Prefs.
-
.registered_validators ⇒ Hash
Stores any validators registered for all instances of Prefs.
Instance Attribute Summary collapse
-
#config_path ⇒ String
readonly
Stores the filepath (if it exists) to the prefs file.
-
#configurator ⇒ Configurator
readonly
Stores a Configurator instance.
-
#prompts ⇒ Array
readonly
Stores answers to prompt questions.
Class Method Summary collapse
-
.deregister_action(symbol) ⇒ void
Deregister an action based on the symbol it was stored under.
-
.deregister_behavior(symbol) ⇒ void
Deregister a behavior based on the symbol it was stored under.
-
.deregister_validator(symbol) ⇒ void
Deregister a validator based on the symbol it was stored under.
-
.register_action(path) ⇒ void
Register an action.
-
.register_behavior(path) ⇒ void
Register a behavior.
-
.register_validator(path) ⇒ void
Register a validator.
Instance Method Summary collapse
-
#ask ⇒ void
Runs through all of the prompt questions and collects answers from the user.
-
#initialize(data, configurator = nil) ⇒ void
constructor
Reads prompt data from and stores it.
Methods included from Messaging
Constructor Details
#initialize(data, configurator = nil) ⇒ void
Reads prompt data from and stores it.
47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 |
# File 'lib/cliutils/prefs.rb', line 47 def initialize(data, configurator = nil) @prompts = [] @configurator = configurator case data when String if File.file?(data) @config_path = data data = YAML.load_file(data).deep_symbolize_keys @prompts = _generate_prefs(data) else fail "Invalid configuration file: #{ data }" end when Hash @config_path = nil data = { prompts: data } unless data.keys[0] == :prompts data.deep_symbolize_keys! @prompts = _generate_prefs(data) when Array @config_path = nil data = { prompts: data }.deep_symbolize_keys @prompts = _generate_prefs(data) else fail 'Invalid configuration data' end end |
Class Attribute Details
.registered_actions ⇒ Hash
Stores any actions registered for all instances of Prefs.
26 27 28 |
# File 'lib/cliutils/prefs.rb', line 26 def registered_actions @registered_actions end |
.registered_behaviors ⇒ Hash
Stores any behaviors registered for all instances of Prefs.
31 32 33 |
# File 'lib/cliutils/prefs.rb', line 31 def registered_behaviors @registered_behaviors end |
.registered_validators ⇒ Hash
Stores any validators registered for all instances of Prefs.
36 37 38 |
# File 'lib/cliutils/prefs.rb', line 36 def registered_validators @registered_validators end |
Instance Attribute Details
#config_path ⇒ String (readonly)
Stores the filepath (if it exists) to the prefs file.
12 13 14 |
# File 'lib/cliutils/prefs.rb', line 12 def config_path @config_path end |
#configurator ⇒ Configurator (readonly)
Stores a Configurator instance.
16 17 18 |
# File 'lib/cliutils/prefs.rb', line 16 def configurator @configurator end |
#prompts ⇒ Array (readonly)
Stores answers to prompt questions.
20 21 22 |
# File 'lib/cliutils/prefs.rb', line 20 def prompts @prompts end |
Class Method Details
.deregister_action(symbol) ⇒ void
This method returns an undefined value.
Deregister an action based on the symbol it was stored under.
96 97 98 |
# File 'lib/cliutils/prefs.rb', line 96 def self.deregister_action(symbol) _deregister_asset(symbol, Pref::ASSET_TYPE_ACTION) end |
.deregister_behavior(symbol) ⇒ void
This method returns an undefined value.
Deregister a behavior based on the symbol it was stored under.
104 105 106 |
# File 'lib/cliutils/prefs.rb', line 104 def self.deregister_behavior(symbol) _deregister_asset(symbol, Pref::ASSET_TYPE_BEHAVIOR) end |
.deregister_validator(symbol) ⇒ void
This method returns an undefined value.
Deregister a validator based on the symbol it was stored under.
112 113 114 |
# File 'lib/cliutils/prefs.rb', line 112 def self.deregister_validator(symbol) _deregister_asset(symbol, Pref::ASSET_TYPE_VALIDATOR) end |
.register_action(path) ⇒ void
This method returns an undefined value.
Register an action.
119 120 121 |
# File 'lib/cliutils/prefs.rb', line 119 def self.register_action(path) self._register_asset(path, Pref::ASSET_TYPE_ACTION) end |
.register_behavior(path) ⇒ void
This method returns an undefined value.
Register a behavior.
126 127 128 |
# File 'lib/cliutils/prefs.rb', line 126 def self.register_behavior(path) _register_asset(path, Pref::ASSET_TYPE_BEHAVIOR) end |
.register_validator(path) ⇒ void
This method returns an undefined value.
Register a validator.
133 134 135 |
# File 'lib/cliutils/prefs.rb', line 133 def self.register_validator(path) _register_asset(path, Pref::ASSET_TYPE_VALIDATOR) end |
Instance Method Details
#ask ⇒ void
This method returns an undefined value.
Runs through all of the prompt questions and collects answers from the user. Note that all questions w/o prerequisites are examined first; once those are complete, questions w/ prerequisites are examined.
78 79 80 81 82 83 84 85 86 87 88 89 90 |
# File 'lib/cliutils/prefs.rb', line 78 def ask # First, deliver all the prompts that don't have # any prerequisites. @prompts.reject { |p| p.prereqs }.each do |p| _deliver_prompt(p) end # After the "non-prerequisite" prompts are delivered, # deliver any that require prerequisites. @prompts.select { |p| p.prereqs }.each do |p| _deliver_prompt(p) if _prereqs_fulfilled?(p) end end |