class Packtory::FpmExec

Public Class Methods

fpm_exec_path() click to toggle source
# File lib/packtory/fpm_exec.rb, line 5
def self.fpm_exec_path
  if !Packtory.config[:fpm_exec_path].nil? && !Packtory.config[:fpm_exec_path].empty?
    Packtory.config[:fpm_exec_path]
  else
    Packtory.bin_support_fpm_path
  end
end
new(packager, prefix_path = nil) click to toggle source
# File lib/packtory/fpm_exec.rb, line 13
def initialize(packager, prefix_path = nil)
  @packager = packager
  @prefix_path = prefix_path
end

Public Instance Methods

build(sfiles_map, package_file, opts = { }) click to toggle source
# File lib/packtory/fpm_exec.rb, line 18
def build(sfiles_map, package_file, opts = { })
  pkg_file = File.join(@packager.pkg_path, package_file)
  FileUtils.mkpath(File.dirname(pkg_file))

  cmd = build_cmd(sfiles_map, pkg_file, opts)

  Bundler.ui.info 'CMD: %s' % cmd

  unless Packtory.config[:fpm_exec_verbose]
    cmd = '%s >/dev/null 2>&1' % cmd
  end

  Bundler.clean_system(cmd)

  pkg_file
end
build_cmd(sfiles_map, pkg_file, opts = { }) click to toggle source
# File lib/packtory/fpm_exec.rb, line 35
def build_cmd(sfiles_map, pkg_file, opts = { })
  cmd = '%s --log %s -f -s dir' % [ self.class.fpm_exec_path, Packtory.config[:fpm_exec_log] || 'warn' ]

  unless Packtory.config[:fpm_use_ruby_path].nil?
    cmd = 'env FPM_USE_RUBY_PATH=%s %s' % [ Packtory.config[:fpm_use_ruby_path], cmd ]
  end

  case opts[:type]
  when :rpm
    cmd << ' -t rpm --rpm-os linux'
  when :deb
    cmd << ' -t deb'
  when :tgz
    cmd << ' -t tar'
  else
    raise 'Unsupported type: %s' % opts[:type]
  end

  cmd << ' -a %s -m "%s" -n %s -v %s --description "%s" --url "%s" --license "%s" --vendor "%s"' %
         [ @packager.architecture,
           @packager.maintainer,
           @packager.package_name,
           @packager.version,
           @packager.description,
           @packager.homepage,
           @packager.license,
           @packager.author ]

  cmd << ' -p %s --after-install %s --template-scripts %s %s %s' %
         [ pkg_file,
           Packtory.after_install_script_path,
           package_dependencies,
           template_values,
           source_files_map(sfiles_map) ]

  cmd
end
package_dependencies() click to toggle source
# File lib/packtory/fpm_exec.rb, line 93
def package_dependencies
  @packager.opts[:dependencies].collect do |k, v|
    if v.nil?
      '-d %s' % k
    else
      '-d "%s%s"' % [ k, v ]
    end
  end.join(' ')
end
source_files_map(files) click to toggle source
# File lib/packtory/fpm_exec.rb, line 73
def source_files_map(files)
  files.inject([ ]) do |a, (k,v)|
    a << '%s=%s' % [ k, v ]; a
  end.join(' ')
end
template_values() click to toggle source
# File lib/packtory/fpm_exec.rb, line 79
def template_values
  values = { }.merge(@packager.template_scripts_values)

  if !@prefix_path.nil?
    values['pg_PACKAGE_PATH'] = @prefix_path % @packager.package_name
  else
    values['pg_PACKAGE_PATH'] = '<'
  end

  values.collect do |k, v|
    '--template-value %s="%s"' % [ k, v ]
  end.join(' ')
end