def self.sanitize_result(output)
result = ResultIO.new
if output && !output.empty?
output.each_line do |line|
if line =~ /^CLIENT_(MESSAGE|RESULT|DEBUG|ERROR): /
if line =~ /^CLIENT_MESSAGE: /
result.messageIO << line['CLIENT_MESSAGE: '.length..-1]
elsif line =~ /^CLIENT_RESULT: /
result.resultIO << line['CLIENT_RESULT: '.length..-1]
elsif line =~ /^CLIENT_DEBUG: /
result.debugIO << line['CLIENT_DEBUG: '.length..-1]
else
result.errorIO << line['CLIENT_ERROR: '.length..-1]
end
elsif line =~ /^CART_DATA: /
result.data << line['CART_DATA: '.length..-1]
elsif line =~ /^CART_PROPERTIES: /
property = line['CART_PROPERTIES: '.length..-1].chomp.split('=')
result.cart_properties[property[0]] = property[1]
elsif line =~ /^APP_INFO: /
result.appInfoIO << line['APP_INFO: '.length..-1]
elsif result.exitcode == 0
if line =~ /^SSH_KEY_(ADD|REMOVE): /
if line =~ /^SSH_KEY_ADD: /
key = line['SSH_KEY_ADD: '.length..-1].chomp
result.cart_commands.push({:command => "SYSTEM_SSH_KEY_ADD", :args => [key]})
else
result.cart_commands.push({:command => "SYSTEM_SSH_KEY_REMOVE", :args => []})
end
elsif line =~ /^APP_SSH_KEY_(ADD|REMOVE): /
if line =~ /^APP_SSH_KEY_ADD: /
response = line['APP_SSH_KEY_ADD: '.length..-1].chomp
cart,key = response.split(' ')
cart = cart.gsub(".", "-")
result.cart_commands.push({:command => "APP_SSH_KEY_ADD", :args => [cart, key]})
else
cart = line['APP_SSH_KEY_REMOVE: '.length..-1].chomp
cart = cart.gsub(".", "-")
result.cart_commands.push({:command => "APP_SSH_KEY_REMOVE", :args => [cart]})
end
elsif line =~ /^APP_ENV_VAR_REMOVE: /
key = line['APP_ENV_VAR_REMOVE: '.length..-1].chomp
result.cart_commands.push({:command => "APP_ENV_VAR_REMOVE", :args => [key]})
elsif line =~ /^ENV_VAR_(ADD|REMOVE): /
if line =~ /^ENV_VAR_ADD: /
env_var = line['ENV_VAR_ADD: '.length..-1].chomp.split('=')
result.cart_commands.push({:command => "ENV_VAR_ADD", :args => [env_var[0], env_var[1]]})
else
key = line['ENV_VAR_REMOVE: '.length..-1].chomp
result.cart_commands.push({:command => "ENV_VAR_REMOVE", :args => [key]})
end
elsif line =~ /^BROKER_AUTH_KEY_(ADD|REMOVE): /
if line =~ /^BROKER_AUTH_KEY_ADD: /
result.cart_commands.push({:command => "BROKER_KEY_ADD", :args => []})
else
result.cart_commands.push({:command => "BROKER_KEY_REMOVE", :args => []})
end
elsif line =~ /^ATTR: /
attr = line['ATTR: '.length..-1].chomp.split('=')
result.cart_commands.push({:command => "ATTR", :args => [attr[0], attr[1]]})
else
end
else
result.debugIO << line
Rails.logger.debug "DEBUG: server results: " + line
end
end
end
result
end