class Assemblyline::Ruby::Provider::Alpine

Attributes

system_packages[R]

Public Class Methods

new(system_packages = SystemPackages.new) click to toggle source
# File lib/assemblyline/ruby/provider/alpine.rb, line 7
def initialize(system_packages = SystemPackages.new)
  @system_packages = system_packages
end

Public Instance Methods

install() click to toggle source
# File lib/assemblyline/ruby/provider/alpine.rb, line 11
def install
  add ".a10e.builddeps", system_packages.all + ["su-exec"]
end
remove() click to toggle source
# File lib/assemblyline/ruby/provider/alpine.rb, line 15
def remove
  add ".a10e.rundeps", rundeps
  del ".a10e.builddeps"
end

Private Instance Methods

add(virtual_package, packages) click to toggle source
# File lib/assemblyline/ruby/provider/alpine.rb, line 36
def add(virtual_package, packages)
  cmd "apk add --no-cache --virtual #{virtual_package} #{packages.join(" ")}"
end
cmd(command) click to toggle source
# File lib/assemblyline/ruby/provider/alpine.rb, line 44
def cmd(command)
  fail unless system command
end
del(package) click to toggle source
# File lib/assemblyline/ruby/provider/alpine.rb, line 40
def del(package)
  cmd "apk del #{package}"
end
required_packages() click to toggle source
# File lib/assemblyline/ruby/provider/alpine.rb, line 28
def required_packages
  `scanelf --needed --nobanner --recursive /usr/local/bundle`.split("\n")
    .map { |row| row.split[1].split(",") }
    .flatten
    .map { |file| `apk info --installed so:#{file}`.chomp }
    .uniq.sort
end
rundeps() click to toggle source
# File lib/assemblyline/ruby/provider/alpine.rb, line 24
def rundeps
  system_packages.runtime + required_packages
end