From d0ffb032025d54698abc6dde86fcf36770a5b1ca Mon Sep 17 00:00:00 2001 From: elijah Date: Wed, 15 May 2013 14:43:43 -0700 Subject: better parsing of `leap node add` (fixes #2531) --- lib/leap_cli/commands/node.rb | 28 +++++++++++++++++++++++++--- 1 file changed, 25 insertions(+), 3 deletions(-) (limited to 'lib/leap_cli') diff --git a/lib/leap_cli/commands/node.rb b/lib/leap_cli/commands/node.rb index 4c7230c..f34b55a 100644 --- a/lib/leap_cli/commands/node.rb +++ b/lib/leap_cli/commands/node.rb @@ -186,9 +186,7 @@ module LeapCli; module Commands def seed_node_data(node, args) args.each do |seed| key, value = seed.split(':') - if value =~ /,/ - value = value.split(',') - end + value = format_seed_value(value) assert! key =~ /^[0-9a-z\._]+$/, "illegal characters used in property '#{key}'" if key =~ /\./ key_parts = key.split('.') @@ -205,6 +203,30 @@ module LeapCli; module Commands end end + # + # conversations: + # + # "x,y,z" => ["x","y","z"] + # + # "22" => 22 + # + # "5.1" => 5.1 + # + def format_seed_value(v) + if v =~ /,/ + v = v.split(',') + v.map do |i| + i = i.to_i if i.to_i.to_s == i + i = i.to_f if i.to_f.to_s == i + i + end + else + v = v.to_i if v.to_i.to_s == v + v = v.to_f if v.to_f.to_s == v + end + return v + end + def validate_ip_address(node) IPAddr.new(node['ip_address']) rescue ArgumentError -- cgit v1.2.3