From e4ea6bcd11128791c1a87659965dfae6c76ba57f Mon Sep 17 00:00:00 2001 From: Luka Vandervelden Date: Thu, 22 Aug 2019 20:11:37 +0200 Subject: [PATCH] Local files can be used in recipe sources. file:// can be used as scheme to make it clearer, but URLs without scheme will be assumed to be local files anyway. --- src/recipe.cr | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/src/recipe.cr b/src/recipe.cr index 7b8b011..177be5d 100644 --- a/src/recipe.cr +++ b/src/recipe.cr @@ -57,6 +57,8 @@ class Package::Recipe getter sources = Sources.new getter packages = Array(Package).new + property recipe_directory = "." + @working_uuid : UUID = UUID.random def initialize(@context, @name, @version) @@ -78,6 +80,8 @@ class Package::Recipe name : String? = nil version : String? = nil + @recipe_directory = File.dirname filename + raise "Could not parse `#{filename}`" if specs.nil? specs.assignments.each do |key, value| @@ -209,7 +213,14 @@ class Package::Recipe raise ExtractionError.new self, url unless status.success? else puts ":: Copying '#{url.filename}'" - FileUtils.cp "#{@context.sources_directory}/#{url.filename}", + + directory = if url.scheme == "file" + @recipe_directory + else + @context.sources_directory + end + + FileUtils.cp "#{directory}/#{url.filename}", url.filename end end