class FPM::Util::TarWriter

Like the ::Gem::Package::TarWriter but contains some backports/latest and bug fixes

Public Instance Methods

split_name(name) click to toggle source
# File lib/fpm/util/tar_writer.rb, line 35
def split_name(name)
  if name.bytesize > 256 then
    raise ::Gem::Package::TooLongFileName.new("File \"#{name}\" has a too long path (should be 256 or less)")
  end

  prefix = ''
  if name.bytesize > 100 then
    parts = name.split('/', -1) # parts are never empty here
    name = parts.pop            # initially empty for names with a trailing slash ("foo/.../bar/")
    prefix = parts.join('/')    # if empty, then it's impossible to split (parts is empty too)
    while !parts.empty? && (prefix.bytesize > 155 || name.empty?)
      name = parts.pop + '/' + name
      prefix = parts.join('/')
    end

    if name.bytesize > 100 or prefix.empty? then
      raise ::Gem::Package::TooLongFileName.new("File \"#{prefix}/#{name}\" has a too long name (should be 100 or less)")
    end

    if prefix.bytesize > 155 then
      raise ::Gem::Package::TooLongFileName.new("File \"#{prefix}/#{name}\" has a too long base path (should be 155 or less)")
    end
  end

  return name, prefix
end