lib/sprout/builder.rb in sprout-0.7.206-darwin vs lib/sprout/builder.rb in sprout-0.7.210

- old
+ new

@@ -1,34 +1,43 @@ module Sprout + class BuilderError < StandardError #:nodoc: + end + # accepts a destination path and a sprout specification # and will download and unpack the platform-specific # archives that are identified in the spec class Builder # :nodoc: - class BuilderError < StandardError #:nodoc: - end - def self.build(file_targets_yaml, destination) data = nil File.open(file_targets_yaml, 'r') do |f| data = f.read end - usr = User.new - platform = usr.platform.to_s - targets = YAML.load(data) targets.each do |target| - if(target.platform == 'universal' || target.platform == platform) + # iterate over the provided RemoteFileTargets until we + # encounter one that is appropriate for our platform, + # or one that claims to be universal. + # When authoring a sprout.spec for libraries or tools, + # put the most specific RemoteFileTargets first, then + # universals to catch unexpected platforms. + if(target.platform == platform || target.platform == 'universal') target.install_path = FileUtils.mkdir_p(destination) target.resolve return target end end raise BuilderError.new("Sprout::Builder.build failed, unsupported platform or unexpected yaml") + end + + private + + def self.platform + @@platform ||= User.new.platform.to_s end end end