class BuildTasks::FPMCookery::Tasks

Public Class Methods

new(attributes) click to toggle source
# File lib/buildtasks/fpm_cookery/tasks.rb, line 14
def initialize(attributes)
  @attributes = attributes
  validate_attributes
  define_tasks
end

Private Instance Methods

define_tasks() click to toggle source
# File lib/buildtasks/fpm_cookery/tasks.rb, line 32
def define_tasks # rubocop:disable MethodLength,AbcSize
  task :default => :build

  file "Gemfile" do |t|
    generate_gemfile(t.name)
  end

  desc "Install build dependencies"
  task :deps => "Gemfile" do
    sh "bundle check || bundle install"
  end

  desc "Build packages"
  task :build => :deps do
    sh sudo("bundle exec fpm-cook package --debug #{recipe}")
  end

  desc "Publish built packages"
  task :publish => :build do
    publish_dir = ENV["PUBLISH_DIR"]
    raise "PUBLISH_DIR variable not set in environment" unless publish_dir

    mkdir_p publish_dir
    cp Dir["pkg/*.deb"], publish_dir
  end

  require "rake/clean"
  CLEAN.include %w(cache tmp-build tmp-dest)
  CLOBBER.include %w(pkg)

  self
end
generate_gemfile(path) click to toggle source
# File lib/buildtasks/fpm_cookery/tasks.rb, line 65
def generate_gemfile(path)
  File.open(path, "w") do |f|
    f.write "source 'https://rubygems.org'\n"
    f.write "gem 'fpm-cookery', '#{fpm_cookery_version}'\n"
    f.write "gem 'fpm', '#{fpm_version}'\n"
  end
end
validate_attributes() click to toggle source
# File lib/buildtasks/fpm_cookery/tasks.rb, line 22
def validate_attributes
  unless File.exist?(recipe)
    raise InvalidAttributeError, "recipe file '#{recipe}' not found"
  end

  if File.exist?("Gemfile")
    STDERR.puts "warning: Gemfile overrules fpm_cookery_version and fpm_version"
  end
end