Sha256: e18a80bf884bf5ba6be916050f29b2b00ed4f5219ad3d9cc0d1d7889cdf21d9c

Contents?: true

Size: 1.26 KB

Versions: 1

Compression:

Stored size: 1.26 KB

Contents

module Bolt
  class Outputter
    class JSON < Bolt::Outputter
      def initialize(stream = $stdout)
        @items_open = false
        @object_open = false
        @preceding_item = false
        super(stream)
      end

      def print_head
        @stream.puts '{ "items": ['
        @preceding_item = false
        @items_open = true
        @object_open = true
      end

      def print_result(node, result)
        item = {
          name: node.uri,
          status: result.is_a?(Bolt::ErrorResult) ? 'failure' : 'success',
          result: result.to_result
        }

        @stream.puts ',' if @preceding_item
        @stream.puts item.to_json
        @preceding_item = true
      end

      def print_summary(results, elapsed_time)
        @stream.puts "],\n"
        @preceding_item = false
        @items_open = false
        @stream.puts format('"node_count": %d, "elapsed_time": %d }',
                            results.size,
                            elapsed_time)
      end

      def print_plan(result)
        @stream.puts result.to_json
      end

      def fatal_error(e)
        @stream.puts "],\n" if @items_open
        @stream.puts '"_error": ' if @object_open
        @stream.puts e.to_json
        @stream.puts '}' if @object_open
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
bolt-0.8.0 lib/bolt/outputter/json.rb