Move download functions into a module
This commit is contained in:
parent
5b26e7dca8
commit
ef9942fe99
29
Rakefile
29
Rakefile
@ -30,7 +30,7 @@ task :composer, [:version] do |_, arguments|
|
|||||||
homepage: 'https://getcomposer.org/'
|
homepage: 'https://getcomposer.org/'
|
||||||
|
|
||||||
uri = "https://getcomposer.org/download/#{arguments[:version]}/composer.phar"
|
uri = "https://getcomposer.org/download/#{arguments[:version]}/composer.phar"
|
||||||
checksum = download URI(uri), 'slackbuilds/development/composer/composer.phar'
|
checksum = SlackBuilder.download URI(uri), 'slackbuilds/development/composer/composer.phar'
|
||||||
write_info package, downloads: [Download.new(uri, checksum.hexdigest)]
|
write_info package, downloads: [Download.new(uri, checksum.hexdigest)]
|
||||||
update_slackbuild_version 'development/composer', arguments[:version]
|
update_slackbuild_version 'development/composer', arguments[:version]
|
||||||
|
|
||||||
@ -47,7 +47,7 @@ task 'universal-ctags', [:version] do |_, arguments|
|
|||||||
|
|
||||||
uri = "https://github.com/universal-ctags/ctags/archive/#{arguments[:version]}/ctags-#{arguments[:version]}.tar.gz"
|
uri = "https://github.com/universal-ctags/ctags/archive/#{arguments[:version]}/ctags-#{arguments[:version]}.tar.gz"
|
||||||
tarball = "slackbuilds/development/universal-ctags/ctags-#{arguments[:version]}.tar.gz"
|
tarball = "slackbuilds/development/universal-ctags/ctags-#{arguments[:version]}.tar.gz"
|
||||||
checksum = download URI(uri), tarball
|
checksum = SlackBuilder.download URI(uri), tarball
|
||||||
download = "https://download.dlackware.com/hosted-sources/universal-ctags/ctags-#{arguments[:version]}.tar.gz"
|
download = "https://download.dlackware.com/hosted-sources/universal-ctags/ctags-#{arguments[:version]}.tar.gz"
|
||||||
|
|
||||||
write_info package,
|
write_info package,
|
||||||
@ -90,8 +90,8 @@ task :ioncube do
|
|||||||
'64' => URI("http://downloads3.ioncube.com/loader_downloads/#{tarball_name['64']}")
|
'64' => URI("http://downloads3.ioncube.com/loader_downloads/#{tarball_name['64']}")
|
||||||
}
|
}
|
||||||
checksum = {
|
checksum = {
|
||||||
'32' => download(uri['32'], "slackbuilds/development/ioncube-loader/#{tarball_name['32']}").hexdigest,
|
'32' => SlackBuilder.download(uri['32'], "slackbuilds/development/ioncube-loader/#{tarball_name['32']}").hexdigest,
|
||||||
'64' => download(uri['64'], "slackbuilds/development/ioncube-loader/#{tarball_name['64']}").hexdigest
|
'64' => SlackBuilder.download(uri['64'], "slackbuilds/development/ioncube-loader/#{tarball_name['64']}").hexdigest
|
||||||
}
|
}
|
||||||
package = Package.new 'development/ioncube-loader',
|
package = Package.new 'development/ioncube-loader',
|
||||||
version: arguments[:version],
|
version: arguments[:version],
|
||||||
@ -110,7 +110,7 @@ end
|
|||||||
task :webex do
|
task :webex do
|
||||||
tarball = 'slackbuilds/network/webex/Webex.deb'
|
tarball = 'slackbuilds/network/webex/Webex.deb'
|
||||||
uri = 'https://binaries.webex.com/WebexDesktop-Ubuntu-Official-Package/Webex.deb'
|
uri = 'https://binaries.webex.com/WebexDesktop-Ubuntu-Official-Package/Webex.deb'
|
||||||
checksum = download URI(uri), tarball
|
checksum = SlackBuilder.download URI(uri), tarball
|
||||||
|
|
||||||
last_stdout, = Open3.pipeline_r ['ar', 'p', tarball, 'control.tar.gz'], ['tar', 'zxO', './control']
|
last_stdout, = Open3.pipeline_r ['ar', 'p', tarball, 'control.tar.gz'], ['tar', 'zxO', './control']
|
||||||
version = last_stdout.read.lines
|
version = last_stdout.read.lines
|
||||||
@ -127,3 +127,22 @@ task :webex do
|
|||||||
update_slackbuild_version 'network/webex', package.version
|
update_slackbuild_version 'network/webex', package.version
|
||||||
commit 'network/webex', package.version
|
commit 'network/webex', package.version
|
||||||
end
|
end
|
||||||
|
|
||||||
|
task 'rdiff-backup', [:version] do |_, arguments|
|
||||||
|
raise 'Version is not specified.' unless arguments.key? :version
|
||||||
|
|
||||||
|
package = Package.new 'system/rdiff-backup',
|
||||||
|
version: arguments[:version],
|
||||||
|
homepage: 'https://rdiff-backup.net/',
|
||||||
|
requires: ['librsync']
|
||||||
|
|
||||||
|
uri = "https://github.com/rdiff-backup/rdiff-backup/releases/download/v#{arguments[:version]}/rdiff-backup-#{arguments[:version]}.tar.gz"
|
||||||
|
tarball = "system/rdiff-backup/rdiff-backup-#{arguments[:version]}.tar.gz"
|
||||||
|
checksum = download_and_deploy URI(uri), tarball
|
||||||
|
download = "https://download.dlackware.com/hosted-sources/rdiff-backup/rdiff-backup-#{arguments[:version]}.tar.gz"
|
||||||
|
|
||||||
|
write_info package, downloads: [Download.new(download, checksum)]
|
||||||
|
update_slackbuild_version 'system/rdiff-backup', arguments[:version]
|
||||||
|
|
||||||
|
commit 'system/rdiff-backup', arguments[:version]
|
||||||
|
end
|
||||||
|
@ -28,58 +28,58 @@ module SlackBuilder
|
|||||||
|
|
||||||
repository
|
repository
|
||||||
end
|
end
|
||||||
end
|
|
||||||
|
|
||||||
def write_chunk(response, checksum, progressbar, io)
|
def self.download(uri, target)
|
||||||
response.read_body do |chunk|
|
print Term::ANSIColor.green "Downloading #{uri} "
|
||||||
progressbar.progress += chunk.length
|
checksum = nil
|
||||||
io << chunk
|
|
||||||
checksum << chunk
|
Net::HTTP.start(uri.host, uri.port, use_ssl: uri.scheme == 'https') do |http|
|
||||||
|
checksum = start_download uri, target, http
|
||||||
|
end
|
||||||
|
|
||||||
|
puts
|
||||||
|
checksum
|
||||||
end
|
end
|
||||||
end
|
|
||||||
|
|
||||||
def write_download(target, response)
|
private_class_method def self.redirect_download(location, target)
|
||||||
checksum = Digest::MD5.new
|
puts 'redirecting...'
|
||||||
progressbar = ProgressBar.create title: target, total: response.header.content_length
|
new_location = URI location
|
||||||
|
|
||||||
File.open target, 'w' do |io|
|
download new_location, target
|
||||||
write_chunk response, checksum, progressbar, io
|
|
||||||
end
|
end
|
||||||
progressbar.finish
|
|
||||||
|
|
||||||
checksum
|
private_class_method def self.write_chunk(response, checksum, progressbar, io)
|
||||||
end
|
response.read_body do |chunk|
|
||||||
|
progressbar.progress += chunk.length
|
||||||
def redirect_download(location, target)
|
io << chunk
|
||||||
puts 'redirecting...'
|
checksum << chunk
|
||||||
new_location = URI location
|
|
||||||
|
|
||||||
download new_location, target
|
|
||||||
end
|
|
||||||
|
|
||||||
def start_download(uri, target, http)
|
|
||||||
request = Net::HTTP::Get.new uri
|
|
||||||
|
|
||||||
http.request request do |response|
|
|
||||||
case response
|
|
||||||
when Net::HTTPRedirection
|
|
||||||
return redirect_download response['location'], target
|
|
||||||
else
|
|
||||||
return write_download target, response
|
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
end
|
|
||||||
|
|
||||||
def download(uri, target)
|
private_class_method def self.write_download(target, response)
|
||||||
print Term::ANSIColor.green "Downloading #{uri} "
|
checksum = Digest::MD5.new
|
||||||
checksum = nil
|
progressbar = ProgressBar.create title: target, total: response.header.content_length
|
||||||
|
|
||||||
Net::HTTP.start(uri.host, uri.port, use_ssl: uri.scheme == 'https') do |http|
|
File.open target, 'w' do |io|
|
||||||
checksum = start_download uri, target, http
|
write_chunk response, checksum, progressbar, io
|
||||||
|
end
|
||||||
|
progressbar.finish
|
||||||
|
|
||||||
|
checksum
|
||||||
end
|
end
|
||||||
|
|
||||||
puts
|
private_class_method def self.start_download(uri, target, http)
|
||||||
checksum
|
request = Net::HTTP::Get.new uri
|
||||||
|
|
||||||
|
http.request request do |response|
|
||||||
|
case response
|
||||||
|
when Net::HTTPRedirection
|
||||||
|
return redirect_download response['location'], target
|
||||||
|
else
|
||||||
|
return write_download target, response
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
def hosted_sources(absolute_url)
|
def hosted_sources(absolute_url)
|
||||||
@ -135,10 +135,10 @@ def download_and_deploy(uri, tarball)
|
|||||||
|
|
||||||
if remote_file_exists?(remote_path)
|
if remote_file_exists?(remote_path)
|
||||||
uri = URI hosted_sources(remote_path)
|
uri = URI hosted_sources(remote_path)
|
||||||
return download(uri, "slackbuilds/#{tarball}").hexdigest
|
return SlackBuilder.download(uri, "slackbuilds/#{tarball}").hexdigest
|
||||||
end
|
end
|
||||||
|
|
||||||
checksum = download uri, "slackbuilds/#{tarball}"
|
checksum = SlackBuilder.download uri, "slackbuilds/#{tarball}"
|
||||||
sh(*upload_command(tarball, remote_path))
|
sh(*upload_command(tarball, remote_path))
|
||||||
checksum.hexdigest
|
checksum.hexdigest
|
||||||
end
|
end
|
||||||
|
@ -15,7 +15,7 @@ module SlackBuilder
|
|||||||
tarball_name = "dmd.#{version}.linux.tar.xz"
|
tarball_name = "dmd.#{version}.linux.tar.xz"
|
||||||
|
|
||||||
uri = URI "http://downloads.dlang.org/releases/2.x/#{version}/#{tarball_name}"
|
uri = URI "http://downloads.dlang.org/releases/2.x/#{version}/#{tarball_name}"
|
||||||
checksum = download(uri, "slackbuilds/development/dmd/#{tarball_name}")
|
checksum = SlackBuilder.download(uri, "slackbuilds/development/dmd/#{tarball_name}")
|
||||||
|
|
||||||
package = Package.new 'development/dmd', version: version,
|
package = Package.new 'development/dmd', version: version,
|
||||||
homepage: 'https://dlang.org'
|
homepage: 'https://dlang.org'
|
||||||
|
Loading…
Reference in New Issue
Block a user