diff --git a/src/recipe.cr b/src/recipe.cr index 8c2b3af..8792a93 100644 --- a/src/recipe.cr +++ b/src/recipe.cr @@ -10,13 +10,6 @@ require "./instructions.cr" require "./sources.cr" require "./exception.cr" -# 🤔 -class URI - def basename - File.basename path - end -end - module FileUtils def self.find(directory, &block : Proc(String, Nil)) Dir.each_child directory do |child| @@ -187,8 +180,8 @@ class Package::Recipe def download sources.each do |url| - unless File.exists? url.basename - status = @context.run @context.sources_directory, "wget", [ url.to_s, "-O", url.basename ] + unless File.exists? url.filename + status = @context.run @context.sources_directory, "wget", [ url.to_s, "-O", url.filename ] raise DownloadError.new self, url unless status.success? end @@ -199,13 +192,13 @@ class Package::Recipe Dir.mkdir_p building_directory sources.each do |url| - basename = url.basename + basename = url.filename status = @context.run( building_directory, "bsdtar", [ "xvf", - @context.sources_directory + "/" + url.basename + @context.sources_directory + "/" + url.filename ] ) diff --git a/src/sources.cr b/src/sources.cr index 23787b6..b9d532f 100644 --- a/src/sources.cr +++ b/src/sources.cr @@ -1,9 +1,34 @@ require "uri" -class Package::Sources < Array(URI) - def <<(url : String) - self << URI.parse url +class Source < URI + getter filename : String + + def initialize(uri : URI) + @fragment = uri.fragment + @host = uri.host + @password = uri.host + @port = uri.port + @query = uri.query + @scheme = uri.scheme + @user = uri.user + + @path = uri.path.gsub /\ *\->.*/, "" + @filename = File.basename(uri.path).gsub /.*-> */, "" + end + + def scheme : String + @scheme || "file" + end + + def self.parse(uri : String) + self.new URI.parse uri + end +end + +class Package::Sources < Array(Source) + def <<(url : String) + self << Source.parse url end end