Skip to content

Instantly share code, notes, and snippets.

@trevor-vaughan
Created March 20, 2017 13:14
Show Gist options
  • Select an option

  • Save trevor-vaughan/6837f3a864c4b6235944cf134a3824c2 to your computer and use it in GitHub Desktop.

Select an option

Save trevor-vaughan/6837f3a864c4b6235944cf134a3824c2 to your computer and use it in GitHub Desktop.
Pull Latest Files from Package Cloud for SIMP - Must be run in a directory with RPMs that you wish to overwrite
#!/usr/bin/env ruby
LOCK=true
#URL='https://packagecloud.io/simp-project/4_X/packages/el/6'
#URL='https://packagecloud.io/simp-project/4_X_Dependencies/packages/el/6'
#URL='https://packagecloud.io/simp-project/5_X/packages/el/7'
#URL='https://packagecloud.io/simp-project/5_X_Dependencies/packages/el/7'
#URL='https://packagecloud.io/simp-project/6_X_Alpha/packages/el/7'
#URL='https://packagecloud.io/simp-project/6_X_Alpha_Dependencies/packages/el/7'
#URL='https://packagecloud.io/simp-project/6_X/packages/el/7'
URL='https://packagecloud.io/simp-project/6_X/packages/el/6'
DRY_RUN=true
if LOCK
$stderr.puts("Modify #{$0} properly before proceeding!")
exit(1)
end
if DRY_RUN
puts("WARNING: Running in DRY_RUN Mode!")
end
require 'net/http'
require 'fileutils'
Dir.glob('*.rpm').each do |rpm|
rpm_name = File.basename(rpm)
rpm_url = [URL, rpm, 'download'].join('/')
rpm_url = URI.parse(rpm_url)
req = Net::HTTP.new(rpm_url.host, rpm_url.port)
req.use_ssl = true
res = req.request_head(rpm_url.path)
if res.code == '404'
puts("Skipping: #{rpm_name}") && next
else
puts("Overwriting: #{rpm_name}")
unless DRY_RUN
FileUtils.mv(rpm, "#{rpm}.bak")
curl_cmd = %(curl -# -L -o #{rpm} #{rpm_url})
system(curl_cmd)
%x(file "#{rpm}" | grep -q 'RPM')
if $?.success?
FileUtils.rm("#{rpm}.bak")
else
puts("Download Error for: #{rpm_name}")
FileUtils.remove_entry_secure(rpm)
FileUtils.mv("#{rpm}.bak", rpm)
end
end
end
end
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment