class Cany::Dpkg::DebHelperRecipe

Public Class Methods

new(*args) click to toggle source
Calls superclass method Cany::Recipe::new
# File lib/cany/dpkg/deb_helper_recipe.rb, line 9
def initialize(*args)
  super *args
  @services = {}
  @pre_scripts = []
  @log = File.read debhelper_log if File.exists? debhelper_log
end

Public Instance Methods

binary() click to toggle source
# File lib/cany/dpkg/deb_helper_recipe.rb, line 38
def binary
  instance_eval &spec.binary if spec.binary
  install_base_service
  install_services
  File.write debhelper_log, @log if File.exists? debhelper_log
  exec %w(dh binary)
end
build() click to toggle source
# File lib/cany/dpkg/deb_helper_recipe.rb, line 33
def build
  instance_eval &spec.build if spec.build
  exec %w(dh build)
end
clean() click to toggle source
# File lib/cany/dpkg/deb_helper_recipe.rb, line 28
def clean
  instance_eval &spec.clean if spec.clean
  exec %w(dh clean)
end
create(creator) click to toggle source
# File lib/cany/dpkg/deb_helper_recipe.rb, line 16
def create(creator)
  depend 'debhelper', version: '>= 7.0.50~', situation: :build
  depend '${shlibs:Depends}'
  depend '${misc:Depends}'
  depend creator.ruby_deb, situation: [:build, :runtime]
  depend creator.ruby_deb + '-dev', situation: :build
end
install_base_service() click to toggle source
# File lib/cany/dpkg/deb_helper_recipe.rb, line 79
    def install_base_service
      File.write debian("#{spec.name}.upstart"), render(<<-EOF.gsub(/^ {8}/, ''))
        description "#{spec.description}"

        start on filesystem or runlevel [2345]
        stop on runlevel [!2345]

        respawn
        respawn limit 10 5
        umask 022

        pre-start script
        <% pre_scripts.each do |k, command| %>
          <%= command %>
        <% end %>
        end script

        exec sleep 365d
      EOF
    end
install_service(name, command, opts={}) click to toggle source
# File lib/cany/dpkg/deb_helper_recipe.rb, line 46
def install_service(name, command, opts={})
  opts = {user: 'root', group: 'root'}.merge opts
  opts[:command] = command
  @services[name] = opts
end
install_services() click to toggle source
# File lib/cany/dpkg/deb_helper_recipe.rb, line 52
    def install_services
      @services.each do |name, opts|
        File.write debian("#{spec.name}.#{spec.name}-#{name}.upstart"), render(<<-EOF.gsub(/^ {10}/, ''), opts.merge(name: name))
          description "<%= spec.description %> - <%= name %>"

          start on started <%= spec.name %>
          stop on stopping <%= spec.name %>

          respawn
          respawn limit 10 5
          umask 022

          chdir /usr/share/<%= spec.name %>

          <% if user %>
          setuid <%= user %>
          <% end %>
          <% if group %>
          setgid <%= group %>
          <% end %>

          exec <%= command.join(' ') %>
        EOF
        exec %w{dh_installinit --name}, "#{spec.name}-#{name}"
      end
    end
prepare() click to toggle source
# File lib/cany/dpkg/deb_helper_recipe.rb, line 24
def prepare
  instance_eval &spec.prepare if spec.prepare
end

Private Instance Methods

debhelper_log() click to toggle source
# File lib/cany/dpkg/deb_helper_recipe.rb, line 114
def debhelper_log
  debian("#{spec.name}.debhelper.log")
end
debian(*args) click to toggle source
# File lib/cany/dpkg/deb_helper_recipe.rb, line 110
def debian(*args)
  File.join('debian', *args)
end
render(template, opts={}) click to toggle source
# File lib/cany/dpkg/deb_helper_recipe.rb, line 101
def render(template, opts={})
  def opts.method_missing(name)
    self[name]
  end
  opts[:spec] = spec
  opts[:pre_scripts] = option :service_pre_scripts
  ERB.new(template, nil, '<>').result opts.instance_eval { binding }
end