Class: Buildizer::Builder::Fpm
- Defined in:
- lib/buildizer/builder/fpm.rb
Constant Summary collapse
- FPM_SCRIPT_EVENTS =
[:before, :after].map {|at| [:install, :upgrade, :remove].map {|event| "#{at}_#{event}"}}.flatten
Instance Attribute Summary
Attributes inherited from Base
#buildizer, #docker, #work_path
Instance Method Summary collapse
- #build_instructions(target) ⇒ Object
- #build_type ⇒ Object
- #check_params!(params) ⇒ Object
- #do_merge_params(into, params) ⇒ Object
- #initial_target_params ⇒ Object
- #target_klass ⇒ Object
Methods inherited from Base
#_required_params!, #build, #build_dep, #build_jobs, #build_target, #deploy, #deploy_target, #initialize, #install_test_package_instructions, #merge_params, #new_target, #prepare, #prepare_package_source_instructions, #prepare_target_build_image, #prepare_test_container_instructions, #target_names, #targets, #test, #test_target, #test_target_env, #verify
Constructor Details
This class inherits a constructor from Buildizer::Builder::Base
Instance Method Details
#build_instructions(target) ⇒ Object
54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 |
# File 'lib/buildizer/builder/fpm.rb', line 54 def build_instructions(target) fpm_script = target.fpm_script.reduce({}) do |res, spec| conditions = Array(spec['when']) raise Error, message: ["no when conditions given ", "for fpm_script of target ", "'#{target.name}'"].join unless conditions.any? cmd = Array(spec['do']) next res unless cmd.any? conditions.each do |_when| raise( Error, message: "unknown fpm_script event #{_when.inspect}" ) unless FPM_SCRIPT_EVENTS.include? _when res[_when] ||= {fpm_option: "--#{_when.split('_').join('-')}", file: target.image_extra_path.join("fpm_#{_when}.sh"), container_file: docker.container_extra_path.join("fpm_#{_when}.sh"), cmd: []} res[_when][:cmd] += cmd end res end fpm_script.values.map do |desc| desc[:file].write! ["#!/bin/bash", *desc[:cmd], nil].join("\n") desc[:file].chmod 0755 end version, release = target.package_version.split('-') ["fpm -s dir", "--force", "-p #{docker.container_build_path}", "-t #{target.os.fpm_output_type}", "-n #{target.package_name}", "--version=#{version}", "--iteration=#{release}", *fpm_script.values.map {|desc| "#{desc[:fpm_option]}=#{desc[:container_file]}"}, *Array(target.os.fpm_extra_params), (target.maintainer ? "--maintainer=\"#{target.maintainer}\"" : nil), (target.fpm_description ? "--description=\"#{target.fpm_description}\"" : nil), (target.fpm_url ? "--url=\"#{target.fpm_url}\"" : nil), *target.fpm_conflicts.map{|pkg| "--conflicts=#{pkg}"}, *target.fpm_replaces.map{|pkg| "--replaces=#{pkg}"}, *target.fpm_provides.map{|pkg| "--provides=#{pkg}"}, *target.fpm_depends.map{|pkg| "--depends=#{pkg}"}, *target..keys.map {|p| "--config-files=#{p}"}, *target..merge(target.).map {|p1, p2| "#{p2}=#{p1}"}, ].compact.join(' ') end |
#build_type ⇒ Object
8 9 10 |
# File 'lib/buildizer/builder/fpm.rb', line 8 def build_type 'fpm' end |
#check_params!(params) ⇒ Object
44 45 46 47 48 49 50 51 52 |
# File 'lib/buildizer/builder/fpm.rb', line 44 def check_params!(params) super if [:fpm_files, :fpm_config_files].all? {|param| params[param].empty?} raise Error, error: :input_error, message: ["either of fpm_files or fpm_config_files ", "required in #{build_type} build_type"].join end _required_params! :package_version, params end |
#do_merge_params(into, params) ⇒ Object
30 31 32 33 34 35 36 37 38 39 40 41 42 |
# File 'lib/buildizer/builder/fpm.rb', line 30 def do_merge_params(into, params) super.tap do |res| res[:fpm_script] = into[:fpm_script] + Array(params['fpm_script']) res[:fpm_config_files] = into[:fpm_config_files].merge(params['fpm_config_files'].to_h) res[:fpm_files] = into[:fpm_files].merge(params['fpm_files'].to_h) res[:fpm_conflicts] = (into[:fpm_conflicts] + Array(params['fpm_conflicts'])).uniq res[:fpm_replaces] = (into[:fpm_replaces] + Array(params['fpm_replaces'])).uniq res[:fpm_provides] = (into[:fpm_provides] + Array(params['fpm_provides'])).uniq res[:fpm_depends] = (into[:fpm_depends] + Array(params['fpm_depends'])).uniq res[:fpm_description] = params['fpm_description'] || into[:fpm_description] res[:fpm_url] = params['fpm_url'] || into[:fpm_url] end end |
#initial_target_params ⇒ Object
16 17 18 19 20 21 22 23 24 25 26 27 28 |
# File 'lib/buildizer/builder/fpm.rb', line 16 def initial_target_params super.tap do |params| params[:fpm_script] = Array(buildizer.buildizer_conf['fpm_script']) params[:fpm_config_files] = buildizer.buildizer_conf['fpm_config_files'].to_h params[:fpm_files] = buildizer.buildizer_conf['fpm_files'].to_h params[:fpm_conflicts] = Array(buildizer.buildizer_conf['fpm_conflicts']) params[:fpm_replaces] = Array(buildizer.buildizer_conf['fpm_replaces']) params[:fpm_provides] = Array(buildizer.buildizer_conf['fpm_provides']) params[:fpm_depends] = Array(buildizer.buildizer_conf['fpm_depends']) params[:fpm_description] = buildizer.buildizer_conf['fpm_description'] params[:fpm_url] = buildizer.buildizer_conf['fpm_url'] end end |