Class: Dr::PkgVersion

Inherits:
Object
  • Object
show all
Defined in:
lib/dr/pkgversion.rb

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(version_string) ⇒ PkgVersion

Returns a new instance of PkgVersion.



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
# File 'lib/dr/pkgversion.rb', line 8

def initialize(version_string)
  @epoch = 0       # integer
  @upstream = ""   # string
  @debian = ""     # string
  @date = 0        # integer
  @build = 0       # integer

  # Make sure the version is string
  version_string = version_string.to_s

  v = version_string.split ":"
  if v.length > 1
    @epoch = v[0].to_i
    version_string = v[1..-1].join ":"
  end

  v = version_string.split "-"
  if v.length == 1
    @upstream = version_string
  else
    @upstream = v[0...-1].join "-"

    # Check whether the is a build tag in the debian version
    dv = v[-1].split "."
    if dv.length == 1
      @debian = v[-1]
    else
      @debian = dv[0]

      build_tag = dv[1..-1].join "."

      if build_tag =~ /^[0-9]{8}/
        @date = dv[1][0..7].to_i

        match = dv[1].match(/build([0-9]+)$/)
        if match
          @build = match.captures[0].to_i
        end
      else
        # The part behind the '.' isn't a valid build tag,
        # append the string back to debian version.
        @debian << '.' << build_tag
      end
    end
  end
end

Instance Attribute Details

#buildObject

Returns the value of attribute build.



6
7
8
# File 'lib/dr/pkgversion.rb', line 6

def build
  @build
end

#dateObject

Returns the value of attribute date.



6
7
8
# File 'lib/dr/pkgversion.rb', line 6

def date
  @date
end

#debianObject

Returns the value of attribute debian.



6
7
8
# File 'lib/dr/pkgversion.rb', line 6

def debian
  @debian
end

#epochObject

Returns the value of attribute epoch.



6
7
8
# File 'lib/dr/pkgversion.rb', line 6

def epoch
  @epoch
end

#upstreamObject

Returns the value of attribute upstream.



6
7
8
# File 'lib/dr/pkgversion.rb', line 6

def upstream
  @upstream
end

Instance Method Details

#<(o) ⇒ Object



65
66
67
# File 'lib/dr/pkgversion.rb', line 65

def <(o)
  compare(o) < 0
end

#<=(o) ⇒ Object



73
74
75
# File 'lib/dr/pkgversion.rb', line 73

def <=(o)
  compare(o) <= 0
end

#==(o) ⇒ Object



81
82
83
# File 'lib/dr/pkgversion.rb', line 81

def ==(o)
  compare(o) == 0
end

#>(o) ⇒ Object



69
70
71
# File 'lib/dr/pkgversion.rb', line 69

def >(o)
  compare(o) > 0
end

#>=(o) ⇒ Object



77
78
79
# File 'lib/dr/pkgversion.rb', line 77

def >=(o)
  compare(o) >= 0
end

#add_build_tagObject



114
115
116
# File 'lib/dr/pkgversion.rb', line 114

def add_build_tag
    @date = today
end

#increment!Object



55
56
57
58
59
60
61
62
63
# File 'lib/dr/pkgversion.rb', line 55

def increment!
  if @date == today
    @build += 1
  else
    @date = today
  end

  self
end

#sourceObject



107
108
109
110
111
112
# File 'lib/dr/pkgversion.rb', line 107

def source
  v = "#{upstream}"
  v = "#{epoch}:#{v}" if @epoch > 0
  v << "-#{debian}" if @debian.length > 0
  v
end

#to_s(omit_epoch = false) ⇒ Object



85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
# File 'lib/dr/pkgversion.rb', line 85

def to_s(omit_epoch=false)
  v = @upstream.clone

  if @epoch > 0 and not omit_epoch
    v = "#{@epoch}:#{v}"
  end

  if @debian.length > 0
    v << "-#{@debian}"
  end

  if @date > 0
    v << ".#{@date}"

    if @build > 0
      v << "build#{@build}"
    end
  end

  v
end