summaryrefslogtreecommitdiff
path: root/Rakefile
blob: e4f93333a54ee5c07033a9ba425134b27deb2ecb (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
# 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 'infra/rake/ruby'
require 'digest/md5'
require 'net/http'
require_relative 'lib/package'
require_relative 'lib/download'

task :dmd do
  version = '2.094.2'
  dub_version = '1.23.0'
  dscanner_version = '0.11.0'
  dcd_version = '0.13.1'
  tarball_name = "dmd.#{version}.linux.tar.xz"

  uri = URI "http://downloads.dlang.org/releases/2.x/#{version}/#{tarball_name}"
  checksum = {
    dmd: download(uri, "slackbuilds/development/dmd/#{tarball_name}").hexdigest,
  }

  package = Package.new 'development/dmd',
    version: version,
    homepage: 'https://dlang.org'

  write_info package,
    download: [uri.to_s],
    md5sum: [checksum[:dmd]]

  update_slackbuild_version 'development/dmd', version
  commit 'development/dmd', version

  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"

  package = Package.new 'development/d-tools',
    version: version,
    homepage: 'https://dlang.org',
    requires: ['dmd']

  write_info package,
    download: [
      hosted_sources("/d-tools/dub-#{dub_version}.tar.gz"),
      hosted_sources("/d-tools/tools-#{version}.tar.gz"),
      hosted_sources("/d-tools/D-Scanner-#{dscanner_version}.tar.xz"),
      hosted_sources("/d-tools/DCD-#{dcd_version}.tar.xz")
    ],
    md5sum: [
      checksum[:dub],
      checksum[:tools],
      checksum[:dscanner],
      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', version
  commit 'development/d-tools', version
end

task :composer do
  version = '2.0.7'

  package = Package.new 'development/composer',
    version: version,
    homepage: 'https://getcomposer.org/'

  uri = URI "https://getcomposer.org/download/#{version}/composer.phar"
  checksum = download uri, 'slackbuilds/development/composer/composer.phar'
  write_info package,
    download: ["https://getcomposer.org/download/#{version}/composer.phar"],
    md5sum: [checksum.hexdigest]
  update_slackbuild_version 'development/composer', version

  commit 'development/composer', version
end

task 'universal-ctags' do
  ENV['COMMIT'] = `git ls-remote https://github.com/universal-ctags/ctags.git master`
    .split
    .first
  ENV['HASH'] = ENV['COMMIT'][0...7]

  sh 'git', 'clone', '--recurse-submodules', 'https://github.com/universal-ctags/ctags.git', "ctags-#{ENV['COMMIT']}"

  rm_rf ["ctags-#{ENV['COMMIT']}/.git", "ctags-#{ENV['COMMIT']}/.gitignore"], secure: true

  sh 'bash', 'scripts/universal-ctags.sh'
end