Skip to content

Instantly share code, notes, and snippets.

@spotlightishere
Created September 7, 2021 18:38
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 0 You must be signed in to fork a gist
  • Save spotlightishere/5a412702f4284b56ad713d9cf53db16d to your computer and use it in GitHub Desktop.
Save spotlightishere/5a412702f4284b56ad713d9cf53db16d to your computer and use it in GitHub Desktop.
#!/usr/bin/ruby
# frozen_string_literal: true
require 'json'
require 'open-uri'
BASE_API = 'https://api.github.com/repos/vector-im/element-web'
response = JSON.parse(URI.open("#{BASE_API}/releases").read)
asset_url = ''
asset_name = ''
response.each do |release|
release_name = release['name']
if release['prerelease']
puts "Skipping prerelease #{release_name}..."
next
end
puts "Downloading #{release_name}"
asset_name = "element-#{release_name}.tar.gz"
# All asset releases start with element-[...].tar.gz.
# TODO: Is it worthwhile to ensure element-[...].tar.gz.asc exists as well?
release['assets'].each do |asset|
next if asset['name'] != asset_name
asset_url = asset['browser_download_url']
end
break
end
if asset_url == ''
puts 'Unable to find a suitable Element asset release. Exiting.'
exit
end
# Download asset.
file_path = "/tmp/#{asset_name}"
File.open(file_path, 'w') do |f|
f.write(URI.open(asset_url).read)
end
# Extract and clean up.
`tar --strip-components=1 --overwrite -C /var/www/riot.awau.uk -xvf #{file_path}`
File.delete(file_path)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment