# 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 '../lib/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 = SlackBuilder.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(SlackBuilder.hosted_sources("/d-tools/dub-#{dub_version}.tar.gz"), checksum[:dub]), Download.new(SlackBuilder.hosted_sources("/d-tools/tools-#{package.version}.tar.gz"), checksum[:tools]), Download.new( SlackBuilder.hosted_sources("/d-tools/D-Scanner-#{dscanner_version}.tar.xz"), checksum[:dscanner] ), Download.new(SlackBuilder.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] = SlackBuilder.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] = SlackBuilder.download_and_deploy uri, "development/d-tools/dub-#{dub_version}.tar.gz" checksum[:dscanner] = SlackBuilder.clone 'https://github.com/dlang-community/D-Scanner.git', "development/d-tools/D-Scanner-#{dscanner_version}.tar.xz" checksum[:dcd] = SlackBuilder.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