lib/mixlib/install/backend/bintray.rb in mixlib-install-1.0.1 vs lib/mixlib/install/backend/bintray.rb in mixlib-install-1.0.2

- old
+ new

@@ -124,10 +124,46 @@ results.reject! do |r| r["name"].end_with?(".asc") || r["name"].end_with?(".pkg") end # Convert results to build records - results.map { |a| create_artifact(a) } + results.map! { |a| create_artifact(a) } + + windows_artifact_fixup!(results) + end + + # On windows, if we do not have a native 64-bit package available + # in the discovered artifacts, we will make 32-bit artifacts available + # for 64-bit architecture. + def windows_artifact_fixup!(artifacts) + new_artifacts = [ ] + native_artifacts = [ ] + + artifacts.each do |r| + next if r.platform != "windows" + + # Store all native 64-bit artifacts and clone 32-bit artifacts to + # be used as 64-bit. + case r.architecture + when "i386" + new_artifacts << r.clone_with(architecture: "x86_64") + when "x86_64" + native_artifacts << r.clone + else + puts "Unknown architecture '#{r.architecture}' for windows." + end + end + + # Now discard the cloned artifacts if we find an equivalent native + # artifact + native_artifacts.each do |r| + new_artifacts.delete_if do |x| + x.platform_version == r.platform_version + end + end + + # add the remaining cloned artifacts to the original set + artifacts += new_artifacts end # # Creates an instance of ArtifactInfo #