Method: Docker::Util.create_relative_dir_tar

Defined in:
lib/docker/util.rb

.create_relative_dir_tar(directory, output) ⇒ Object



145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
# File 'lib/docker/util.rb', line 145

def create_relative_dir_tar(directory, output)
  Gem::Package::TarWriter.new(output) do |tar|
    files = glob_all_files(File.join(directory, "**/*"))
    remove_ignored_files!(directory, files)

    files.each do |prefixed_file_name|
      stat = File.stat(prefixed_file_name)
      next unless stat.file?

      unprefixed_file_name = prefixed_file_name[directory.length..-1]
      add_file_to_tar(
        tar, unprefixed_file_name, stat.mode, stat.size, stat.mtime
      ) do |tar_file|
        IO.copy_stream(File.open(prefixed_file_name, 'rb'), tar_file)
      end
    end
  end
end