Sha256: eb4e2bb93b60f20950ef944b7d7b19dfa21953e630ae60b908804d7289aec4e0

Contents?: true

Size: 1.63 KB

Versions: 8

Compression:

Stored size: 1.63 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_event(event)
        case event[:type]
        when :node_result
          print_result(event[:result])
        end
      end

      def print_result(result)
        @stream.puts ',' if @preceding_item
        @stream.puts result.status_hash.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_table(results)
        @stream.puts results.to_json
      end

      def print_task_info(task)
        replace_data_type(task['parameters'])
        @stream.puts task.to_json
      end

      def print_plan_info(plan)
        @stream.puts plan.to_json
      end

      def print_plan_result(result)
        # Ruby JSON patches most objects to have a to_json method.
        @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

      def print_message(message); end
    end
  end
end

Version data entries

8 entries across 8 versions & 1 rubygems

Version Path
bolt-0.17.2 lib/bolt/outputter/json.rb
bolt-0.17.1 lib/bolt/outputter/json.rb
bolt-0.17.0 lib/bolt/outputter/json.rb
bolt-0.16.4 lib/bolt/outputter/json.rb
bolt-0.16.3 lib/bolt/outputter/json.rb
bolt-0.16.2 lib/bolt/outputter/json.rb
bolt-0.16.1 lib/bolt/outputter/json.rb
bolt-0.16.0 lib/bolt/outputter/json.rb