Project

General

Profile

Download (3.47 KB) Statistics
| Branch: | Tag: | Revision:
require 'rake/clean'

BUILDDIR = File.expand_path(ENV['BUILDDIR'] || '_build')
PREFIX = ENV['PREFIX'] || '/usr/local'
BINDIR = ENV['BINDIR'] || "#{PREFIX}/bin"
LIBDIR = ENV['LIBDIR'] || "#{PREFIX}/lib"
SBINDIR = ENV['SBINDIR'] || "#{PREFIX}/sbin"
INCLUDEDIR = ENV['INCLUDEDIR'] || "#{PREFIX}/include"
SYSCONFDIR = ENV['SYSCONFDIR'] || "#{PREFIX}/etc"
LOCALSTATEDIR = ENV['LOCALSTATEDIR'] || "#{PREFIX}/var"
SHAREDSTAREDIR = ENV['SHAREDSTAREDIR'] || "#{LOCALSTATEDIR}/lib"
DATAROOTDIR = DATADIR = ENV['DATAROOTDIR'] || "#{PREFIX}/share"
MANDIR = ENV['MANDIR'] || "#{DATAROOTDIR}/man"

file 'VERSION' do |t|
version = ENV['VERSION'] || '1.0-develop-' + Time.now.strftime("%Y%m%d%I%M")
File.open(t.name, 'w') { |f| f.puts version }
end

file BUILDDIR do
mkdir BUILDDIR
end

file "#{BUILDDIR}/foreman-installer.yaml" => 'config/foreman-installer.yaml' do |t|
cp t.prerequisites[0], t.name
sh 'sed -i "s#\(.*answer_file:\).*#\1 %s#" %s' % ["#{SYSCONFDIR}/foreman/foreman-installer-answers.yaml", t.name]
sh 'sed -i "s#\(.*installer_dir:\).*#\1 %s#" %s' % ["#{DATADIR}/foreman-installer", t.name]
sh 'sed -i "s#\(.*modules_dir:\).*#\1 %s#" %s' % ["#{DATADIR}/foreman-installer/modules", t.name]
if ENV['KAFO_MODULES_DIR']
sh 'sed -i "s#.*\(:kafo_modules_dir:\).*#\1 %s#" %s' % [ENV['KAFO_MODULES_DIR'], t.name]
end
end

file "#{BUILDDIR}/foreman-installer" => 'bin/foreman-installer' do |t|
cp t.prerequisites[0], t.name
sh 'sed -i "s#\(.*CONFIG_FILE\).*#\1 = \"%s\"#" %s' % ["#{SYSCONFDIR}/foreman/foreman-installer.yaml", t.name]
end

file "#{BUILDDIR}/options.asciidoc" do |t|
['/usr/share/gems/bin/kafo-export-params',
'/usr/lib/ruby/gems/1.8/bin/kafo-export-params',
'/usr/bin/kafo-export-params',
ENV['KAFO_EXPORTER'] || 'kafo-export-params'].each do |exporter|
if File.executable? exporter
sh "#{exporter} -c config/foreman-installer.yaml -f asciidoc > #{BUILDDIR}/options.asciidoc"
end
end
end

file "#{BUILDDIR}/foreman-installer.8.asciidoc" =>
['man/foreman-installer.8.asciidoc', "#{BUILDDIR}/options.asciidoc"] do |t|
man_file = t.prerequisites[0]
options_file = t.prerequisites[1]
if File.exist? options_file
puts "Writing combined manual page to #{t.name}"
options = File.read(options_file)
File.open(t.name, 'w') do |output|
File.open(man_file, 'r') do |input|
input.each_line {|line| output.puts line.gsub(/@@PARAMETERS@@/, options)}
end
end
else
puts "WARNING: kafo exporter not found - not generating extended manual page"
cp t.prerequisites[0], t.name
end
end

file "#{BUILDDIR}/foreman-installer.8" => "#{BUILDDIR}/foreman-installer.8.asciidoc" do |t|
sh "a2x -d manpage -f manpage #{BUILDDIR}/foreman-installer.8.asciidoc"
end

task :build => [
BUILDDIR,
'VERSION',
"#{BUILDDIR}/foreman-installer.yaml",
"#{BUILDDIR}/foreman-installer",
"#{BUILDDIR}/foreman-installer.8",
]

task :install => :build do |t|
mkdir_p "#{DATADIR}/foreman-installer"
cp_r Dir.glob('{checks,config,modules,VERSION,README.md,LICENSE}'), "#{DATADIR}/foreman-installer"

mkdir_p "#{SYSCONFDIR}/foreman"
cp "#{BUILDDIR}/foreman-installer.yaml", "#{SYSCONFDIR}/foreman/"
cp "config/answers.yaml", "#{SYSCONFDIR}/foreman/foreman-installer-answers.yaml"

mkdir_p SBINDIR
install "#{BUILDDIR}/foreman-installer", "#{SBINDIR}/foreman-installer", :mode => 0755, :verbose => true

mkdir_p "#{MANDIR}/man8"
cp "#{BUILDDIR}/foreman-installer.8", "#{MANDIR}/man8/"
end

task :default => :build

CLEAN.include [
'VERSION',
'_build',
]
(5-5/10)