51 lines
1.4 KiB
Crystal
51 lines
1.4 KiB
Crystal
require "../backends.cr"
|
|
|
|
|
|
class WeirdBackend < Package::Backend::Packaging
|
|
def initialize
|
|
@name = "weird"
|
|
end
|
|
|
|
def package(context : Package::Context, package : Package::Package)
|
|
destination_package_file = "#{context.packages_directory}/#{package.name}-#{package.version}-#{package.release}.weird"
|
|
|
|
tmpdir = package.recipe.working_directory
|
|
fake_root = package.fake_root_directory
|
|
|
|
context.detail "Archiving package content"
|
|
context.run fake_root, "tar", ["cJf", "#{tmpdir}/data.tar.xz", "."]
|
|
|
|
context.detail "Generating control.spec"
|
|
generate_spec package, "#{tmpdir}/control.spec"
|
|
|
|
context.detail "Assembling '#{destination_package_file}'"
|
|
|
|
r = context.run tmpdir, "tar", [
|
|
"cf", destination_package_file,
|
|
"control.spec", "data.tar.xz"
|
|
]
|
|
|
|
r.exit_status == 0
|
|
end
|
|
|
|
def generate_spec(package : Package::Package, file_name : String)
|
|
file = File.open file_name, "w"
|
|
|
|
file.puts "name: #{package.name}"
|
|
file.puts "version: #{package.version}"
|
|
file.puts "release: #{package.release}"
|
|
file.puts
|
|
file.puts "url: #{package.url}"
|
|
file.puts "description: #{package.description}"
|
|
file.puts
|
|
file.puts "slot: #{package.prefix}"
|
|
file.puts
|
|
file.puts "dependencies: #{package.dependencies.join ", "}"
|
|
file.puts "conflicts: #{package.conflicts.join ", "}"
|
|
file.puts "provides: #{package.provides.join ", "}"
|
|
|
|
file.close
|
|
end
|
|
end
|
|
|