summaryrefslogtreecommitdiff
path: root/lib/package.rb
blob: 739e18ecfb4d33626c1094d87c8a8e3e4541f008 (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
# 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

class Package
  attr_reader :path, :version, :homepage, :requires

  def initialize(path, version:, homepage:, requires: [])
    @path = path
    @version = version
    @homepage = homepage
    @requires = requires
  end

  def name
    File.basename @path
  end
end

class Download
  attr_reader :download, :md5sum

  def initialize(download, md5sum, is64: false)
    @download = download
    @md5sum = md5sum
    @is64 = is64
  end

  def is64?
    @is64
  end
end

def info_template(package, downloads)
  downloads64, downloads32 = downloads.partition(&:is64?)
  download32, md5sum32, download64, md5sum64 = download_entries downloads64, downloads32

  <<~INFO_FILE
    PRGNAM="#{package.name}"
    VERSION="#{package.version}"
    HOMEPAGE="#{package.homepage}"
    DOWNLOAD="#{download32}"
    MD5SUM="#{md5sum32}"
    DOWNLOAD_x86_64="#{download64}"
    MD5SUM_x86_64="#{md5sum64}"
    REQUIRES="#{requires_entry package.requires}"
    MAINTAINER="Eugene Wissner"
    EMAIL="belka@caraus.de"
  INFO_FILE
end

private

def requires_entry(requires)
  requires.empty? ? '%README%' : requires * ' '
end

def download_entries(downloads64, downloads32)
  download32 =
    if downloads32.empty? && !downloads64.empty?
      'UNSUPPORTED'
    else
      downloads32.map(&:download) * " \\\n          "
    end
  md5sum32 = downloads32.map(&:md5sum) * " \\\n        "
  download64 = downloads64.map(&:download) * " \\\n          "
  md5sum64 = downloads64.map(&:md5sum) * " \\\n        "

  [download32, md5sum32, download64, md5sum64]
end