This repository has been archived on 2022-01-17. You can view files and clone it, but cannot push or open issues/pull-requests.
packaging/src/context.cr

57 lines
1.4 KiB
Crystal
Raw Normal View History

2019-07-02 03:50:50 +02:00
2019-07-03 03:35:35 +02:00
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
2019-07-02 03:50:50 +02:00
class Package::Context
property working_directory = "/tmp/package"
property sources_directory = Dir.current
property packages_directory = Dir.current
2019-07-03 03:35:35 +02:00
@packaging_backends = [] of Backend::Packaging
2019-07-02 03:50:50 +02:00
def initialize
2019-07-03 03:35:35 +02:00
@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
2019-07-02 03:50:50 +02:00
end
2019-07-02 19:45:33 +02:00
def run(chdir, command, args)
Process.run command, args, chdir: chdir, output: Process::Redirect::Inherit, error: Process::Redirect::Inherit
end
def run(command, args)
run nil, command, args
end
def run(command)
run nil, command, nil
end
def package(package : Package) : Bool
2019-07-03 03:35:35 +02:00
@selected_packaging_backend.package package
end
2019-07-02 03:50:50 +02:00
end