1
0
mirror of https://github.com/jordansissel/fpm synced 2024-12-22 00:34:15 +01:00
fpm/examples/api/dir-to-deb-rpm-with-init.rb
Claus F. Strasburger 9db164ad6e Add example: create rpm&deb packages with init scripts
Took me some time to figure out how to use the api -- So I am submitting this example to add some documentation for the API, specifically pleaserun.
2016-11-25 13:22:19 +01:00

54 lines
1.5 KiB
Ruby

#!/usr/bin/env ruby
$: << File.join(File.dirname(__FILE__), "..", "..", "lib")
# This example uses the API to create a package from local files
# it also creates necessary init-scripts and systemd files so our executable can be used as a service
require "fpm"
require "tmpdir"
require "fpm/package/pleaserun"
# enable logging
FPM::Util.send :module_function, :logger
FPM::Util.logger.level = :info
FPM::Util.logger.subscribe STDERR
package = FPM::Package::Dir.new
# Set some attributes
package.name = "my-service"
package.version = "1.0"
# Add a script to run after install (should be in the current directory):
package.scripts[:after_install] = 'my_after_install_script.sh'
# Example for adding special attributes
package.attributes[:deb_group] = "super-useful"
package.attributes[:rpm_group] = "super-useful"
# Add our files (should be in the current directory):
package.input("my-executable=/usr/bin/")
package.input("my-library.so=/usr/lib/")
# Now, add our init-scripts, systemd services, and so on:
pleaserun = package.convert(FPM::Package::PleaseRun)
pleaserun.input ["/usr/bin/my-executable", "--foo-from", "bar"]
# Create two output packages!
output_packages = []
output_packages << pleaserun.convert(FPM::Package::RPM)
output_packages << pleaserun.convert(FPM::Package::Deb)
# and write them both.
begin
output_packages.each do |output_package|
output = output_package.to_s
output_package.output(output)
puts "successfully created #{output}"
end
ensure
# defer cleanup until the end
output_packages.each {|p| p.cleanup}
end