module FPM::Fry::Plugin::Init

A plugin that detects the init system of a docker image.

This plugin is a low-level plugin and is used by other plugins such as “service”.

@example in a recipe when using the image “ubuntu:16.04”

plugin 'init'
init.systemd? #=> true
init.sysv? #=> false

Private Class Methods

apply(builder) click to toggle source
# File lib/fpm/fry/plugin/init.rb, line 77
def self.apply(builder)
  builder.extend(self)
  return builder.init
end
detect(inspector) click to toggle source
# File lib/fpm/fry/plugin/init.rb, line 42
def self.detect(inspector)
  if inspector.exists?('/lib/systemd/systemd')
    return System.new(:systemd, {})
  end
  if inspector.exists?('/etc/init')
    return detect_upstart(inspector)
  end
  if inspector.exists?('/etc/init.d')
    return detect_sysv(inspector)
  end
  return nil
end
detect_sysv(inspector) click to toggle source
# File lib/fpm/fry/plugin/init.rb, line 62
def self.detect_sysv(inspector)
  features = {
    :chkconfig => inspector.exists?('/sbin/chkconfig'),
    :'update-rc.d' => inspector.exists?('/usr/sbin/update-rc.d'),
    :'invoke-rc.d' => inspector.exists?('/usr/sbin/invoke-rc.d')
  }
  return System.new(:sysv,features)
end
detect_upstart(inspector) click to toggle source
# File lib/fpm/fry/plugin/init.rb, line 55
def self.detect_upstart(inspector)
  features = {
    sysvcompat: inspector.exists?('/lib/init/upstart-job') ? '/lib/init/upstart-job' : false
  }
  return System.new(:upstart,features)
end
extended(base) click to toggle source
# File lib/fpm/fry/plugin/init.rb, line 71
def self.extended(base)
  base.instance_eval do
    @init ||= FPM::Fry::Plugin::Init.detect(inspector)
  end
end

Public Instance Methods

init() click to toggle source

@return [System] initsystem in use

# File lib/fpm/fry/plugin/init.rb, line 37
def init
  return @init
end