Sha256: 4ee852f9f5ee99e6fa06cb9cabb2b22cd0e4d408a55610caa5d95ca2261fd456

Contents?: true

Size: 997 Bytes

Versions: 2

Compression:

Stored size: 997 Bytes

Contents

module Choria
  class Colt
    module DataStructurer
      def self.structure(res) # rubocop:disable Metrics/AbcSize
        # data.stdout seems to always be JSON, so parse it once.
        res[:result] = JSON.parse res[:data][:stdout]
        res[:data].delete :stdout

        # On one side, data.stderr is filled by the remote execution stderr.
        # On the other side, error description is in JSON (ie. '_error')
        # So merge data.stderr in '_error'.'details'
        unless res[:data][:stderr].empty?
          raise NotImplementedError, 'What to do when res[:data][:stderr] contains something?' if res[:result]['_error'].empty?

          res[:result]['_error']['details'].merge!({ 'stderr' => res[:data][:stderr].split("\n") })
        end
        res[:data].delete :stderr

        # Convert '_output' (ie. stdout) lines into array
        res[:result]['_output'] = res[:result]['_output'].split("\n") unless res[:result]['_output'].nil?

        res
      end
    end
  end
end

Version data entries

2 entries across 2 versions & 1 rubygems

Version Path
choria-colt-0.4.0 lib/choria/colt/data_structurer.rb
choria-colt-0.3.0 lib/choria/colt/data_structurer.rb