21 lines
610 B
Crystal
21 lines
610 B
Crystal
require "file_utils"
|
|
|
|
class Package::Weird
|
|
def self.extract(file, metadata_destination, data_destination)
|
|
FileUtils.mkdir_p "#{metadata_destination}"
|
|
r = Process.run "tar", ["xf", file, "-C", metadata_destination],
|
|
output: STDOUT, error: STDERR
|
|
|
|
raise Exception.new "Invalid package: extraction failed" unless r.success?
|
|
|
|
FileUtils.mkdir_p "#{data_destination}"
|
|
r = Process.run "tar", [
|
|
"xf", "#{metadata_destination}/data.tar.xz",
|
|
"-C", data_destination],
|
|
output: STDOUT, error: STDERR
|
|
|
|
raise Exception.new "Invalid package: data.tar.xz extraction failed" unless r.success?
|
|
end
|
|
end
|
|
|