Sha256: c5b455fd83051f57a72cf826664063f16c159ac1db27df8177fd31c1738d015a
Contents?: true
Size: 1.4 KB
Versions: 2
Compression:
Stored size: 1.4 KB
Contents
require 'docker' require_relative 'rbld_utils' require_relative 'rbld_print' module Rebuild::Engine extend Rebuild::Utils::Errors rebuild_errors \ EnvironmentLoadFailure: 'Failed to load environment from %s', EnvironmentSaveFailure: 'Failed to save environment %s to %s' class EnvironmentFile def initialize(filename, docker_api = Docker) @filename, @docker_api = filename, docker_api end def load! begin with_gzip_reader { |gz| Docker::Image.load(gz) } rescue => msg rbld_print.trace( msg ) raise EnvironmentLoadFailure, @filename end end def save!(name, identity) begin with_gzip_writer do |gz| Docker::Image.save_stream( identity ) { |chunk| gz.write chunk } end rescue => msg rbld_print.trace( msg ) raise EnvironmentSaveFailure, [name, @filename] end end private def with_gzip_writer begin File.open(@filename, 'w') do |f| f.binmode gz = Zlib::GzipWriter.new(f) begin yield gz ensure gz.close end end rescue FileUtils::safe_unlink( @filename ) raise end end def with_gzip_reader Zlib::GzipReader.open( @filename ) do |gz| begin yield gz ensure gz.close end end end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
rbld-1.2.0 | cli/lib/rbld_fileops.rb |
rbld-1.1.0 | cli/lib/rbld_fileops.rb |