summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorEugen Wissner <belka@caraus.de>2022-11-20 12:44:28 +0100
committerEugen Wissner <belka@caraus.de>2022-11-20 12:44:28 +0100
commite3fa7d216fe2f24015681c913fffd4dd92cc19ae (patch)
tree314641bd924887076403d57eb987e163d73abbd1 /lib
parent3b93e0d9505deea61a24f0d4084255055017cf8f (diff)
downloadslackbuilder-e3fa7d216fe2f24015681c913fffd4dd92cc19ae.tar.gz
Split dmd and d-tools update functions
Diffstat (limited to 'lib')
-rw-r--r--lib/dmd_tools.rb83
1 files changed, 83 insertions, 0 deletions
diff --git a/lib/dmd_tools.rb b/lib/dmd_tools.rb
new file mode 100644
index 0000000..124fbaa
--- /dev/null
+++ b/lib/dmd_tools.rb
@@ -0,0 +1,83 @@
+# This Source Code Form is subject to the terms of the Mozilla Public
+# License, v. 2.0. If a copy of the MPL was not distributed with this
+# file, You can obtain one at https://mozilla.org/MPL/2.0/.
+
+# frozen_string_literal: true
+
+require 'rake'
+require_relative 'download'
+
+module SlackBuilder
+ module DmdTools
+ extend Rake::FileUtilsExt
+
+ def self.update_dmd(version)
+ 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}")
+
+ package = Package.new 'development/dmd', version: version,
+ homepage: 'https://dlang.org'
+
+ write_info package, downloads: [Download.new(uri.to_s, checksum.hexdigest)]
+
+ update_slackbuild_version 'development/dmd', package.version
+ commit 'development/dmd', version
+ end
+
+ def self.update_tools(version, dub_version, dscanner_version, dcd_version)
+ checksum = collect_checksums(version, dub_version, dscanner_version, dcd_version)
+
+ package = Package.new 'development/d-tools',
+ version: version,
+ homepage: 'https://dlang.org',
+ requires: ['dmd']
+
+ write_tools_info package, dub_version, dscanner_version, dcd_version, checksum
+ update_tools_versions dub_version, dscanner_version, dcd_version
+
+ update_slackbuild_version 'development/d-tools', package.version
+ commit 'development/d-tools', package.version
+ end
+
+ private_class_method def self.write_tools_info(package, dub_version, dscanner_version, dcd_version, checksum)
+ write_info package,
+ downloads: [
+ Download.new(hosted_sources("/d-tools/dub-#{dub_version}.tar.gz"), checksum[:dub]),
+ Download.new(hosted_sources("/d-tools/tools-#{package.version}.tar.gz"), checksum[:tools]),
+ Download.new(hosted_sources("/d-tools/D-Scanner-#{dscanner_version}.tar.xz"), checksum[:dscanner]),
+ Download.new(hosted_sources("/d-tools/DCD-#{dcd_version}.tar.xz"), checksum[:dcd])
+ ]
+ end
+
+ private_class_method def self.collect_checksums(version, dub_version, dscanner_version, dcd_version)
+ checksum = {}
+
+ uri = URI "https://codeload.github.com/dlang/tools/tar.gz/v#{version}"
+ checksum[:tools] = download_and_deploy uri, "development/d-tools/tools-#{version}.tar.gz"
+
+ uri = URI "https://codeload.github.com/dlang/dub/tar.gz/v#{dub_version}"
+ checksum[:dub] = download_and_deploy uri, "development/d-tools/dub-#{dub_version}.tar.gz"
+
+ checksum[:dscanner] = clone 'https://github.com/dlang-community/D-Scanner.git',
+ "development/d-tools/D-Scanner-#{dscanner_version}.tar.xz"
+ checksum[:dcd] = clone 'https://github.com/dlang-community/DCD.git',
+ "development/d-tools/DCD-#{dcd_version}.tar.xz"
+
+ checksum
+ end
+
+ private_class_method def self.update_tools_versions(dub_version, dscanner_version, dcd_version)
+ slackbuild_filename = 'slackbuilds/development/d-tools/d-tools.SlackBuild'
+ slackbuild_contents = File.read(slackbuild_filename)
+ .gsub(/^DUB_VERSION=\${DUB_VERSION:-.+/,
+ "DUB_VERSION=${DUB_VERSION:-#{dub_version}}")
+ .gsub(/^DSCANNER_VERSION=\${DSCANNER_VERSION:-.+/,
+ "DSCANNER_VERSION=${DSCANNER_VERSION:-#{dscanner_version}}")
+ .gsub(/^DCD_VERSION=\${DCD_VERSION:-.+/,
+ "DCD_VERSION=${DCD_VERSION:-#{dcd_version}}")
+ File.open(slackbuild_filename, 'w') { |file| file.puts slackbuild_contents }
+ end
+ end
+end