summaryrefslogtreecommitdiff
path: root/lib/leap_cli/config/list.rb
diff options
context:
space:
mode:
authorelijah <elijah@riseup.net>2012-10-11 00:42:46 -0700
committerelijah <elijah@riseup.net>2012-10-11 00:42:46 -0700
commit113d3a59eaa7547433434d155fc1e60aa7c2094c (patch)
treec468f38066f2f7669f84efb2d6b971fac0cf2346 /lib/leap_cli/config/list.rb
parent64073733a1213a5e4fe2fef7722996f62ba89c5c (diff)
code cleanup. better support for nested configs and templates.
Diffstat (limited to 'lib/leap_cli/config/list.rb')
-rw-r--r--lib/leap_cli/config/list.rb81
1 files changed, 0 insertions, 81 deletions
diff --git a/lib/leap_cli/config/list.rb b/lib/leap_cli/config/list.rb
deleted file mode 100644
index 28ef499..0000000
--- a/lib/leap_cli/config/list.rb
+++ /dev/null
@@ -1,81 +0,0 @@
-module LeapCli
- module Config
- class List < Hash
-
- def initialize(config=nil)
- if config
- self << config
- end
- end
-
- #
- # if the key is a hash, we treat it as a condition and filter all the configs using the condition
- #
- # for example:
- #
- # nodes[:public_dns => true]
- #
- # will return a ConfigList with node configs that have public_dns set to true
- #
- def [](key)
- if key.is_a? Hash
- results = List.new
- field, match_value = key.to_a.first
- field = field.is_a?(Symbol) ? field.to_s : field
- match_value = match_value.is_a?(Symbol) ? match_value.to_s : match_value
- each do |name, config|
- value = config[field]
- if !value.nil?
- if value.is_a? Array
- if value.includes?(match_value)
- results[name] = config
- end
- else
- if value == match_value
- results[name] = config
- end
- end
- end
- end
- results
- else
- super
- end
- end
-
- def <<(config)
- if config.is_a? Config::List
- self.deep_merge!(config)
- elsif config['name']
- self[config['name']] = config
- else
- raise ArgumentError.new('argument must be a Config::Base or a Config::List')
- end
- end
-
- #
- # converts the hash of configs into an array of hashes, with ONLY the specified fields
- #
- def fields(*fields)
- result = []
- keys.sort.each do |name|
- result << self[name].pick(*fields)
- end
- result
- end
-
- #
- # like fields(), but returns an array of values instead of an array of hashes.
- #
- def field(field)
- field = field.to_s
- result = []
- keys.sort.each do |name|
- result << self[name][field]
- end
- result
- end
-
- end
- end
-end