summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Rakefile29
-rw-r--r--lib/download.rb80
-rw-r--r--rakelib/dmd_tools.rake2
3 files changed, 65 insertions, 46 deletions
diff --git a/Rakefile b/Rakefile
index a6e4e0b..b022fdc 100644
--- a/Rakefile
+++ b/Rakefile
@@ -30,7 +30,7 @@ task :composer, [:version] do |_, arguments|
homepage: 'https://getcomposer.org/'
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)]
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"
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"
write_info package,
@@ -90,8 +90,8 @@ task :ioncube do
'64' => URI("http://downloads3.ioncube.com/loader_downloads/#{tarball_name['64']}")
}
checksum = {
- '32' => download(uri['32'], "slackbuilds/development/ioncube-loader/#{tarball_name['32']}").hexdigest,
- '64' => download(uri['64'], "slackbuilds/development/ioncube-loader/#{tarball_name['64']}").hexdigest
+ '32' => SlackBuilder.download(uri['32'], "slackbuilds/development/ioncube-loader/#{tarball_name['32']}").hexdigest,
+ '64' => SlackBuilder.download(uri['64'], "slackbuilds/development/ioncube-loader/#{tarball_name['64']}").hexdigest
}
package = Package.new 'development/ioncube-loader',
version: arguments[:version],
@@ -110,7 +110,7 @@ end
task :webex do
tarball = 'slackbuilds/network/webex/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']
version = last_stdout.read.lines
@@ -127,3 +127,22 @@ task :webex do
update_slackbuild_version 'network/webex', package.version
commit 'network/webex', package.version
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
diff --git a/lib/download.rb b/lib/download.rb
index 308e8ee..64a453f 100644
--- a/lib/download.rb
+++ b/lib/download.rb
@@ -28,58 +28,58 @@ module SlackBuilder
repository
end
-end
-def write_chunk(response, checksum, progressbar, io)
- response.read_body do |chunk|
- progressbar.progress += chunk.length
- io << chunk
- checksum << chunk
- end
-end
+ def self.download(uri, target)
+ print Term::ANSIColor.green "Downloading #{uri} "
+ checksum = nil
-def write_download(target, response)
- checksum = Digest::MD5.new
- progressbar = ProgressBar.create title: target, total: response.header.content_length
+ Net::HTTP.start(uri.host, uri.port, use_ssl: uri.scheme == 'https') do |http|
+ checksum = start_download uri, target, http
+ end
- File.open target, 'w' do |io|
- write_chunk response, checksum, progressbar, io
+ puts
+ checksum
end
- progressbar.finish
- checksum
-end
+ private_class_method def self.redirect_download(location, target)
+ puts 'redirecting...'
+ new_location = URI location
-def redirect_download(location, target)
- puts 'redirecting...'
- new_location = URI location
+ download new_location, target
+ end
- download new_location, target
-end
+ private_class_method def self.write_chunk(response, checksum, progressbar, io)
+ response.read_body do |chunk|
+ progressbar.progress += chunk.length
+ io << chunk
+ checksum << chunk
+ end
+ end
-def start_download(uri, target, http)
- request = Net::HTTP::Get.new uri
+ private_class_method def self.write_download(target, response)
+ checksum = Digest::MD5.new
+ progressbar = ProgressBar.create title: target, total: response.header.content_length
- http.request request do |response|
- case response
- when Net::HTTPRedirection
- return redirect_download response['location'], target
- else
- return write_download target, response
+ File.open target, 'w' do |io|
+ write_chunk response, checksum, progressbar, io
end
+ progressbar.finish
+
+ checksum
end
-end
-def download(uri, target)
- print Term::ANSIColor.green "Downloading #{uri} "
- checksum = nil
+ private_class_method def self.start_download(uri, target, http)
+ request = Net::HTTP::Get.new uri
- Net::HTTP.start(uri.host, uri.port, use_ssl: uri.scheme == 'https') do |http|
- checksum = start_download uri, target, http
+ 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
-
- puts
- checksum
end
def hosted_sources(absolute_url)
@@ -135,10 +135,10 @@ def download_and_deploy(uri, tarball)
if remote_file_exists?(remote_path)
uri = URI hosted_sources(remote_path)
- return download(uri, "slackbuilds/#{tarball}").hexdigest
+ return SlackBuilder.download(uri, "slackbuilds/#{tarball}").hexdigest
end
- checksum = download uri, "slackbuilds/#{tarball}"
+ checksum = SlackBuilder.download uri, "slackbuilds/#{tarball}"
sh(*upload_command(tarball, remote_path))
checksum.hexdigest
end
diff --git a/rakelib/dmd_tools.rake b/rakelib/dmd_tools.rake
index 3d98063..843e9fb 100644
--- a/rakelib/dmd_tools.rake
+++ b/rakelib/dmd_tools.rake
@@ -15,7 +15,7 @@ module SlackBuilder
tarball_name = "dmd.#{version}.linux.tar.xz"
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,
homepage: 'https://dlang.org'