Sha256: 897835df4a429660b5fd47f5b1c46652c9d253c05aa88ce075834a2038d8940d

Contents?: true

Size: 1.26 KB

Versions: 1

Compression:

Stored size: 1.26 KB

Contents

require 'docker/dockerrun'
require 'json'

module Docker
  module Dockerrun
    class Tag
      def initialize(new_tag)
        @new_tag = new_tag
      end

      def call
        open
        read
        overwrite_with_new_tag
        close
      end

      private

      attr_reader :file, :original_json

      def open
        @file ||= File.open(FILE_NAME, 'r+')
      end

      def read
        @original_json ||= file.read
      end

      def original_hash
        @original_hash ||= JSON.parse(original_json)
      end

      def original_image_value
        original_hash.fetch 'Image', { }
      end

      def original_name_value
        original_image_value.fetch 'Name', ''
      end

      def name_without_tag
        original_name_value.sub /:.*/, ''
      end

      def updated_name
        "#{name_without_tag}:#{@new_tag}"
      end

      def updated_image_value
        original_image_value.merge 'Name' => updated_name
      end

      def updated_hash
        original_hash.merge 'Image' => updated_image_value
      end

      def updated_json
        JSON.pretty_generate updated_hash
      end

      def overwrite_with_new_tag
        file.rewind
        file.write updated_json
      end

      def close
        file.close
      end
    end
  end
end

Version data entries

1 entries across 1 versions & 1 rubygems

Version Path
docker-eb-deploy-0.1.1 lib/docker/dockerrun/tag.rb