summaryrefslogtreecommitdiff
path: root/Rakefile
blob: 4af411ae810331fbf0f7de698cc60bed96c9db05 (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
# 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 'digest/md5'
require 'net/http'
require 'open3'
require_relative 'config/config'
require_relative 'lib/package'
require_relative 'lib/download'
require_relative 'lib/up2date'

task :dmd, [:version] do |_, arguments|
  raise 'Version is not specified.' unless arguments.key? :version

  dub_version = '1.33.0'
  dscanner_version = '0.15.2'
  dcd_version = '0.15.2'

  SlackBuilder::DmdTools.update_dmd arguments[:version]
  SlackBuilder::DmdTools.update_tools arguments[:version], dub_version, dscanner_version, dcd_version
end

task :hhvm, [:version] do |_, arguments|
  raise 'Version is not specified.' unless arguments.key? :version

  checksum = {}
  checksum[:hhvm] = SlackBuilder.clone 'https://github.com/facebook/hhvm.git',
    "development/hhvm/hhvm-#{arguments[:version]}.tar.xz", 'HHVM-'

  package = Package.new 'development/hhvm',
    version: arguments[:version],
    homepage: 'https://hhvm.com/',
    requires: %w[tbb glog libdwarf libmemcached dobule-conversion]

  write_info package,
    downloads: [
      Download.new(SlackBuilder.hosted_sources("/hhvm/hhvm-#{package.version}.tar.xz"), checksum[:hhvm], is64: true)
    ]

  update_slackbuild_version 'development/hhvm', package.version
end

task :webex do
  tarball = 'slackbuilds/network/webex/Webex.deb'
  uri = 'https://binaries.webex.com/WebexDesktop-Ubuntu-Official-Package/Webex.deb'
  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
    .find { |line| line.start_with? 'Version: ' }
    .split.last

  package = Package.new 'network/webex',
    version: version,
    homepage: 'https://www.webex.com'

  write_info package,
    downloads: [Download.new(uri, checksum, is64: true)]

  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 = SlackBuilder.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

AUTO_UPDATABLE = {
  'rdiff-backup' => [SlackBuilder::GitHub.new('rdiff-backup', 'rdiff-backup', 'rdiff-backup')],
  'dmd' => [SlackBuilder::LatestText.new('https://downloads.dlang.org/releases/LATEST')]
}.freeze

task :up2date do
  AUTO_UPDATABLE.each do |key, value|
    repository, updater = value
    latest_version = SlackBuilder.check_for_latest key, repository
    next if latest_version.nil? || updater.nil?

    puts "Would like to update #{key} to #{latest_version} (y/N)? "
    updater.update latest_version if $stdin.gets.chomp.downcase.start_with? 'y'
  end
end