Class: Zypper::Upgraderepo::OsRelease

Inherits:
Object
  • Object
show all
Defined in:
lib/zypper/upgraderepo/os_release.rb

Overview

Detect the current and next release.

Constant Summary collapse

UNSTABLE_VERSION =
"16.0"
OS_RELEASE_FILE =
"/etc/os-release"
SUSE_RELEASE_FILE =
"/etc/SuSE-release"

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(options) ⇒ OsRelease

Returns a new instance of OsRelease.

Raises:



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
# File 'lib/zypper/upgraderepo/os_release.rb', line 19

def initialize(options)
  @os_versions = ["13.1", "13.2",
                  "42.1", "42.2", "42.3",
                  "15.0", "15.1", "15.2", "15.3", "15.4", "15.5", "15.6",
                  "16.0"]

  if options.allow_unstable
    raise NoUnstableVersionAvailable if UNSTABLE_VERSION.empty?

    @os_versions << UNSTABLE_VERSION
    @unstable = true
  end

  fname = if File.exist? self.class::OS_RELEASE_FILE
            self.class::OS_RELEASE_FILE
          elsif File.exist? self.class::SUSE_RELEASE_FILE
            self.class::SUSE_RELEASE_FILE
          else
            raise ReleaseFileNotFound
          end
  @release = IniParse.parse(File.read(fname))
  @current_idx = @os_versions.index(@release["__anonymous__"]["VERSION"].delete('"'))

  return unless options.version
  raise InvalidVersion, options.version unless @os_versions.include?(options.version)

  @custom = options.version
end

Instance Attribute Details

#customObject (readonly)

Returns the value of attribute custom.



11
12
13
# File 'lib/zypper/upgraderepo/os_release.rb', line 11

def custom
  @custom
end

#unstableObject (readonly)

Returns the value of attribute unstable.



11
12
13
# File 'lib/zypper/upgraderepo/os_release.rb', line 11

def unstable
  @unstable
end

Instance Method Details

#currentObject



48
49
50
# File 'lib/zypper/upgraderepo/os_release.rb', line 48

def current
  @os_versions[@current_idx]
end

#current?(version) ⇒ Boolean

Returns:

  • (Boolean)


96
97
98
# File 'lib/zypper/upgraderepo/os_release.rb', line 96

def current?(version)
  @os_versions.index(version) == @current_idx
end

#first?Boolean

Returns:

  • (Boolean)


88
89
90
# File 'lib/zypper/upgraderepo/os_release.rb', line 88

def first?
  @current_idx.zero?
end

#fullnameObject



68
69
70
# File 'lib/zypper/upgraderepo/os_release.rb', line 68

def fullname
  @release["__anonymous__"]["PRETTY_NAME"].gsub('"', "")
end

#lastObject



52
53
54
# File 'lib/zypper/upgraderepo/os_release.rb', line 52

def last
  @os_versions[-1]
end

#last?Boolean

Returns:

  • (Boolean)


84
85
86
# File 'lib/zypper/upgraderepo/os_release.rb', line 84

def last?
  @current_idx == (@os_versions.count - 1)
end

#newerObject



76
77
78
79
80
81
82
# File 'lib/zypper/upgraderepo/os_release.rb', line 76

def newer
  if seniority.positive?
    @os_versions[@current_idx.next..-1]
  else
    []
  end
end

#nextObject



56
57
58
59
60
# File 'lib/zypper/upgraderepo/os_release.rb', line 56

def next
  return if last?

  @os_versions[@current_idx.next]
end

#previousObject



62
63
64
65
66
# File 'lib/zypper/upgraderepo/os_release.rb', line 62

def previous
  return if first?

  @os_versions[@current_idx.pred]
end

#seniorityObject



72
73
74
# File 'lib/zypper/upgraderepo/os_release.rb', line 72

def seniority
  @os_versions.count - @current_idx.next
end

#valid?(version) ⇒ Boolean

Returns:

  • (Boolean)


92
93
94
# File 'lib/zypper/upgraderepo/os_release.rb', line 92

def valid?(version)
  @os_versions.include? version
end