aboutsummaryrefslogtreecommitdiff
path: root/lib/leap_cli/config/manager.rb
diff options
context:
space:
mode:
authorelijah <elijah@riseup.net>2013-06-19 17:51:24 -0700
committerelijah <elijah@riseup.net>2013-06-19 17:51:24 -0700
commit23aa42d957294b025a367c543cd99f137c48e289 (patch)
treedba6247f616c72cf9b737d7a47b837498449b685 /lib/leap_cli/config/manager.rb
parent5675bd54cf7dc11a234bb305c64c801c4eeaea62 (diff)
downloadleap_cli-23aa42d957294b025a367c543cd99f137c48e289.tar.gz
leap_cli-23aa42d957294b025a367c543cd99f137c48e289.tar.bz2
fixed utf8 bug when locale not set, and improved testing for ruby 1.8.
Diffstat (limited to 'lib/leap_cli/config/manager.rb')
-rw-r--r--lib/leap_cli/config/manager.rb23
1 files changed, 17 insertions, 6 deletions
diff --git a/lib/leap_cli/config/manager.rb b/lib/leap_cli/config/manager.rb
index d2bc1f3..92cf190 100644
--- a/lib/leap_cli/config/manager.rb
+++ b/lib/leap_cli/config/manager.rb
@@ -1,5 +1,9 @@
require 'json/pure'
+if $ruby_version < [1,9]
+ require 'iconv'
+end
+
module LeapCli
module Config
@@ -218,9 +222,18 @@ module LeapCli
end
end
+ #
+ # force UTF-8
+ #
+ if $ruby_version >= [1,9]
+ string = buffer.string.force_encoding('utf-8')
+ else
+ string = Iconv.conv("UTF-8//IGNORE", "UTF-8", buffer.string)
+ end
+
# parse json
begin
- hash = JSON.parse(buffer.string, :object_class => Hash, :array_class => Array) || {}
+ hash = JSON.parse(string, :object_class => Hash, :array_class => Array) || {}
rescue SyntaxError, JSON::ParserError => exc
log 0, :error, 'in file "%s":' % filename
log 0, exc.to_s, :indent => 1
@@ -293,11 +306,10 @@ module LeapCli
def remove_disabled_nodes
@disabled_nodes = Config::ObjectList.new
- @nodes.select! do |name, node|
- if node.enabled
- true
- else
+ @nodes.each do |name, node|
+ unless node.enabled
log 2, :skipping, "disabled node #{name}."
+ @nodes.delete(name)
@disabled_nodes[name] = node
if node['services']
node['services'].to_a.each do |node_service|
@@ -309,7 +321,6 @@ module LeapCli
@tags[node_tag].node_list.delete(node.name)
end
end
- false
end
end
end