class Linecook::Squashfs

Constants

EXCLUDE_PROFILES

Public Class Methods

new(config) click to toggle source
# File lib/linecook-gem/packager/squashfs.rb, line 28
def initialize(config)
  @excludes = []
  @excludes << EXCLUDE_PROFILES[:common]
  @excludes << EXCLUDE_PROFILES[config[:distro]] if config[:distro]
  @excludes << config[:excludes] if config[:excludes]
  @excludes.flatten!
  @outdir = config[:outdir] || Dir.pwd
end

Public Instance Methods

package(image) click to toggle source
# File lib/linecook-gem/packager/squashfs.rb, line 37
def package(image)
  FileUtils.mkdir_p(@outdir)
  tmpdir = Dir.mktmpdir("#{image.id}-squashfs")
  outfile = File.join(@outdir, "#{image.id}.squashfs")
  puts "Extracting #{image.id} to temporary directory #{tmpdir}..."
  system("sudo tar -C #{tmpdir} -xpf #{image.path}")
  system("sudo mksquashfs #{tmpdir} #{outfile} -noappend -wildcards -e #{@excludes.map { |e| "'#{e}'" }.join(' ')}")
  puts "Squashed image is at #{outfile}"
ensure
  puts "Cleaning up #{tmpdir}..."
  system("sudo rm -rf #{tmpdir}")
end