#!/usr/bin/env ruby

require 'open-uri'
require 'digest/sha2'
require 'tempfile'

raise "Usage: #{$0} NEW_VERSION" unless ARGV.size == 1
new_version = ARGV[0]

major_minor = new_version.split('.')[0..1].join('.')

url = "https://github.com/openssl/openssl/releases/download/openssl-#{new_version}/openssl-#{new_version}.tar.gz"
sha = nil

Tempfile.create(['openssl', '.tar.gz']) do |tmpfile|
  URI.open(url) do |remote_file|
    IO.copy_stream(remote_file, tmpfile)
  end
  tmpfile.rewind

  sha = Digest::SHA256.file(tmpfile.path).hexdigest
end

Dir.glob('share/ruby-build/*') do |file|
  contents = File.read(file)

  openssl_package = "\"openssl-#{major_minor}"

  next unless contents.include? openssl_package

  lines = contents.lines
  line = lines.find { |line| line.include? openssl_package }
  old_version = line[/"openssl-([\d.]+[a-z]?)"/, 1] or raise
  line.gsub!(old_version, new_version)
  line.sub!(/\.tar\.gz#(\h+)"/, ".tar.gz##{sha}\"")
  File.write(file, lines.join)
end
