diff options
author | elijah <elijah@riseup.net> | 2013-06-19 17:51:24 -0700 |
---|---|---|
committer | elijah <elijah@riseup.net> | 2013-06-19 17:51:24 -0700 |
commit | 23aa42d957294b025a367c543cd99f137c48e289 (patch) | |
tree | dba6247f616c72cf9b737d7a47b837498449b685 /lib | |
parent | 5675bd54cf7dc11a234bb305c64c801c4eeaea62 (diff) |
fixed utf8 bug when locale not set, and improved testing for ruby 1.8.
Diffstat (limited to 'lib')
-rw-r--r-- | lib/leap_cli.rb | 2 | ||||
-rw-r--r-- | lib/leap_cli/config/manager.rb | 23 | ||||
-rw-r--r-- | lib/leap_cli/config/object.rb | 4 | ||||
-rw-r--r-- | lib/leap_cli/version.rb | 2 |
4 files changed, 23 insertions, 8 deletions
diff --git a/lib/leap_cli.rb b/lib/leap_cli.rb index 259c00f..2f9ffec 100644 --- a/lib/leap_cli.rb +++ b/lib/leap_cli.rb @@ -1,5 +1,7 @@ module LeapCli; end +$ruby_version = RUBY_VERSION.split('.').collect{ |i| i.to_i }.extend(Comparable) + require 'leap/platform.rb' require 'leap_cli/version.rb' 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 diff --git a/lib/leap_cli/config/object.rb b/lib/leap_cli/config/object.rb index b88c7b4..1edef3f 100644 --- a/lib/leap_cli/config/object.rb +++ b/lib/leap_cli/config/object.rb @@ -1,7 +1,9 @@ require 'erb' require 'json/pure' # pure ruby implementation is required for our sorted trick to work. -$KCODE = 'UTF8' unless RUBY_VERSION > "1.9.0" +if $ruby_version < [1,9] + $KCODE = 'UTF8' +end require 'ya2yaml' # pure ruby yaml require 'leap_cli/config/macros' diff --git a/lib/leap_cli/version.rb b/lib/leap_cli/version.rb index bbec03a..00df109 100644 --- a/lib/leap_cli/version.rb +++ b/lib/leap_cli/version.rb @@ -1,6 +1,6 @@ module LeapCli unless defined?(LeapCli::VERSION) - VERSION = '1.1.0' + VERSION = '1.1.1' SUMMARY = 'Command line interface to the LEAP platform' DESCRIPTION = 'The command "leap" can be used to manage a bevy of servers running the LEAP platform from the comfort of your own home.' LOAD_PATHS = ['lib', 'vendor/certificate_authority/lib', 'vendor/rsync_command/lib'] |