Class: Bigrig::Tar
- Inherits:
-
Object
- Object
- Bigrig::Tar
- Defined in:
- lib/bigrig/tar.rb
Class Method Summary collapse
- .add_file(tar, prefixed_file_name, unprefixed_file_name) ⇒ Object
- .create_dir_tar(directory) ⇒ Object
- .create_relative_dir_tar(directory, output) ⇒ Object
- .create_temp_file ⇒ Object
- .read_docker_ignore(directory) ⇒ Object
Class Method Details
.add_file(tar, prefixed_file_name, unprefixed_file_name) ⇒ Object
25 26 27 28 29 30 31 32 33 34 |
# File 'lib/bigrig/tar.rb', line 25 def add_file(tar, prefixed_file_name, unprefixed_file_name) stat = File.stat(prefixed_file_name) stat.file? || return tar.add_file_simple( unprefixed_file_name, stat.mode, stat.size ) do |tar_file| IO.copy_stream(File.open(prefixed_file_name, 'rb'), tar_file) end end |
.create_dir_tar(directory) ⇒ Object
4 5 6 7 8 9 10 11 |
# File 'lib/bigrig/tar.rb', line 4 def create_dir_tar(directory) tempfile = create_temp_file directory += '/' unless directory.end_with?('/') create_relative_dir_tar(directory, tempfile) File.new(tempfile.path, 'r') end |
.create_relative_dir_tar(directory, output) ⇒ Object
13 14 15 16 17 18 19 20 21 22 23 |
# File 'lib/bigrig/tar.rb', line 13 def create_relative_dir_tar(directory, output) ignore_matchers = read_docker_ignore(directory).map { |x| GoMatcher.new x } Gem::Package::TarWriter.new(output) do |tar| Find.find(directory) do |prefixed_file_name| unprefixed_file_name = prefixed_file_name[directory.length..-1] ignore_matchers.detect { |x| x.matches? unprefixed_file_name } && next add_file tar, prefixed_file_name, unprefixed_file_name end end end |
.create_temp_file ⇒ Object
36 37 38 39 |
# File 'lib/bigrig/tar.rb', line 36 def create_temp_file tempfile_name = Dir::Tmpname.create('out') {} File.open(tempfile_name, 'wb+') end |
.read_docker_ignore(directory) ⇒ Object
41 42 43 44 45 |
# File 'lib/bigrig/tar.rb', line 41 def read_docker_ignore(directory) File.read(File.join directory, '.dockerignore').split "\n" rescue Errno::ENOENT [] end |