From fa92519f4d78aa98cf3027c4e0265ece45a0ca93 Mon Sep 17 00:00:00 2001 From: Luka Vandervelden Date: Wed, 3 Jul 2019 03:35:35 +0200 Subject: [PATCH] Packaging backends. --- src/context.cr | 35 +++++++++++++++++++++++++++++++---- src/main.cr | 2 ++ 2 files changed, 33 insertions(+), 4 deletions(-) diff --git a/src/context.cr b/src/context.cr index b7249ec..792aa78 100644 --- a/src/context.cr +++ b/src/context.cr @@ -1,10 +1,40 @@ +class Package::Backend::Packaging + getter name : String + + def initialize(@name, &block : Proc(Package, Bool)) + @callback = block + end + + def package(package : Package) + @callback.call package + end +end + class Package::Context property working_directory = "/tmp/package" property sources_directory = Dir.current property packages_directory = Dir.current + @packaging_backends = [] of Backend::Packaging + def initialize + @packaging_backends << Backend::Packaging.new "pkgutils" do |package| + puts "#{package.fake_root_directory} -> #{packages_directory}/#{package.name}##{package.version}.pkg.tar.xz" + pp! r = run package.fake_root_directory, "tar", ["cJf", "#{packages_directory}/#{package.name}##{package.version}.pkg.tar.xz", "."] + + r.exit_status == 0 + end + + @selected_packaging_backend = @packaging_backends[0] + end + + def packaging_backend=(name : String) + @selected_packaging_backend = @packaging_backends.find(&.name.==(name)).not_nil! + end + + def packaging_backend=(backend : Backend::Packaging) + @selected_packaging_backend = backend end def run(chdir, command, args) @@ -20,10 +50,7 @@ class Package::Context end def package(package : Package) : Bool - puts "#{package.fake_root_directory} -> #{packages_directory}/#{package.name}##{package.version}.pkg.tar.xz" - pp! r = run package.fake_root_directory, "tar", ["cJf", "#{packages_directory}/#{package.name}##{package.version}.pkg.tar.xz", "."] - - r.exit_status == 0 + @selected_packaging_backend.package package end end diff --git a/src/main.cr b/src/main.cr index 5adad77..f200cbc 100644 --- a/src/main.cr +++ b/src/main.cr @@ -6,6 +6,8 @@ extend Package # FIXME: recipe.clean? context autoclean? Context.new().tap do |context| + context.packaging_backend = "pkgutils" + # FIXME: context.new_recipe? context.recipe? Recipe.new(context, "hello", "2.10").tap do |recipe| recipe.sources << "https://ftp.gnu.org/gnu/hello/hello-2.10.tar.gz"