summaryrefslogtreecommitdiff
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
parent3b93e0d9505deea61a24f0d4084255055017cf8f (diff)
downloadslackbuilder-e3fa7d216fe2f24015681c913fffd4dd92cc19ae.tar.gz
Split dmd and d-tools update functions
-rw-r--r--.rubocop.yml2
-rw-r--r--Rakefile59
-rw-r--r--lib/dmd_tools.rb83
3 files changed, 88 insertions, 56 deletions
diff --git a/.rubocop.yml b/.rubocop.yml
index 0d17f42..099cb76 100644
--- a/.rubocop.yml
+++ b/.rubocop.yml
@@ -37,4 +37,4 @@ Layout/EndAlignment:
EnforcedStyleAlignWith: variable
Metrics/BlockLength:
- Max: 55
+ Max: 37
diff --git a/Rakefile b/Rakefile
index d25e1c7..eb45a33 100644
--- a/Rakefile
+++ b/Rakefile
@@ -9,68 +9,17 @@ require 'net/http'
require_relative 'config/config'
require_relative 'lib/package'
require_relative 'lib/download'
+require_relative 'lib/dmd_tools'
task :dmd, [:version] do |_, arguments|
raise 'Version is not specified.' unless arguments.key? :version
- dub_version = '1.29.0'
+ dub_version = '1.30.0'
dscanner_version = '0.12.2'
dcd_version = '0.13.6'
- tarball_name = "dmd.#{arguments[:version]}.linux.tar.xz"
- uri = URI "http://downloads.dlang.org/releases/2.x/#{arguments[:version]}/#{tarball_name}"
- checksum = {
- dmd: download(uri, "slackbuilds/development/dmd/#{tarball_name}").hexdigest
- }
-
- package = Package.new 'development/dmd',
- version: arguments[:version],
- homepage: 'https://dlang.org'
-
- write_info package,
- downloads: [Download.new(uri.to_s, checksum[:dmd])]
-
- update_slackbuild_version 'development/dmd', package.version
- commit 'development/dmd', version
-
- uri = URI "https://codeload.github.com/dlang/tools/tar.gz/v#{package.version}"
- checksum[:tools] = download_and_deploy uri,
- "development/d-tools/tools-#{package.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"
-
- package = Package.new 'development/d-tools',
- version: arguments[:version],
- homepage: 'https://dlang.org',
- requires: ['dmd']
-
- 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])
- ]
-
- 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 }
-
- update_slackbuild_version 'development/d-tools', package.version
- commit 'development/d-tools', package.version
+ SlackBuilder::DmdTools.update_dmd arguments[:version]
+ SlackBuilder::DmdTools.update_tools arguments[:version], dub_version, dscanner_version, dcd_version
end
task :composer, [:version] do |_, arguments|
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